Scripts

Kalender 2.0

ik heb het commentaar op Kalender nog niet verwerkt, Jaap, maar wel een connectie met een database gemaakt. Bas, kan jij het script weer uploaden? Groeten, Remi

kalender-20
[code]<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<!-- ik heb wat opmaak dingetjes laten vallen... niet nodig en het wordt
  zo bont -->
	 
		 
<head>
 <style type="text/css">
  input {border : 1px #000000 solid;}
  th {background-color: #eeeeee;}
	.line {border: 3px #000000 solid;}
	.dik {font-weight:bolt ;background-color: #ffffff;}		 
  </style>
  <title>Calendar 2.0</title>
</head>

<?php

$table = "bbhc_calendar";

/* voordat we verder gaan, eerst even de structuur van de tabel printen:
 copy-paste dit maar in je phpmyadmin of mysql-control-center
 
# phpMyAdmin MySQL-Dump
# version 2.2.3
# http://phpwizard.net/phpMyAdmin/
# http://phpmyadmin.sourceforge.net/ (download page)
#
# Host: localhost
# Generatie Tijd: May 04, 2004 at 08:10 PM
# Server versie: 3.23.49
# PHP Versie: 4.1.2
# Database : `gius`
# --------------------------------------------------------

#
# Tabel structuur voor tabel `bbhc_calendar`
#

CREATE TABLE bbhc_calendar (
  date date NOT NULL default '2000-00-00',
  body blob NOT NULL,
  PRIMARY KEY  (date)
) TYPE=MyISAM;

INSERT INTO bbhc_calendar (date, body) values ('2004-01-01','Nieuwjaarsdag');
INSERT INTO bbhc_calendar (date, body) values ('2004-12-24','Eerste Kerstdag');
INSERT INTO bbhc_calendar (date, body) values ('2004-12-25','Tweede Kerstdag');
INSERT INTO bbhc_calendar (date, body) values ('2004-05-04','Datum dat ik deze kalender gepost heb, groeten van Remi');

*/


function alias($monthnr){

//------------- 
// pre: monthnr is een integer 
// post: retourneerd de naam van de maand 

  switch ($monthnr){
     case "01": return "Januari";
     case "02": return "Februari";
     case "03": return "Maart";
     case "04": return "April";
     case "05": return "Mei";
     case "06": return "Juni";
     case "07": return "Juli";
     case "08": return "Augustus";
     case "09": return "September";
     case "10": return "Oktober";
     case "11": return "November";
     case "12": return "December";				
     }	//einde switch
}// einde function alias

function calendar($day,$month,$year,$mode){

/*------------- 
 pre: - 
 post: retourneerd een overzicht van een maand met wat knopjes
 			 als mode = 0 dan niets bijzonders
			 als mode = 1 extra invoerveld voor de datum 
*/
  // eerst zorgen we dat de gearceerde dag vaststaat in $today
	$today=$day;

	// handig als we weten op welke weekdag de maand begint
  $firstdayofthemonth= date ("w", mktime(0, 0, 0, $month, 0, $year));
	
	// dus hoeveel moeten we printen van de vorige maand?
  $dayforloop = 1 - $firstdayofthemonth;
	
  // de laatste dag van de maand is het getal...
  $lastdayofthemonth= date ("d", mktime(0, 0, 0, $month+1, 0, $year));
	
	// de laatste dag van de maand valt op een ...	
  $endweekday =	date ("w", mktime(0, 0, 0, $month+1, -1, $year));
	
	// als de laatste dag van de maand niet op een zondag valt...
	if (!($endweekday==6))
	  
		// dan moeten we zoveel rotzooi van de volgende maand weergeven:
	  $endday = $lastdayofthemonth + (6-$endweekday);
	
	// in elk ander geval: (de volgende maand begint op een volgende regel)
	else $endday = $lastdayofthemonth;
  
	//echo "laatste dag: $lastdayofthemonth, doornummeren tot: $endday";
	
  echo "<form method=\"post\">";
	echo "<input type=\"hidden\" name=\"day\" value=\"$day\"></input>";
	echo "<input type=\"hidden\" name=\"month\" value=\"$month\"></input>";
	echo "<input type=\"hidden\" name=\"year\" value=\"$year\"></input>";
		  
  echo "<table class=\"line\" border=\"0\" cellpadding=\"03\" cellspacing=\"0\">";
	
  echo "<tr><th align=\"center\" colspan=\"6\"><input type=\"text\" align=\"center\" name=\"date\" value=\"".
			 date ("d/m/y", mktime(0, 0, 0, $month, $day, $year))."\"></input></th><th>".
			 "<input type=\"submit\" name=\"button\" title=\"Go to this date\" value=\"go\"></input>".
			 "</th></tr>";
	
	echo "<tr><th colspan=\"7\">".alias($month)."/$year</th></tr>";
			 
  echo "<tr>
  		  <th align=\"center\">ma </th>
  			<th align=\"center\">di </th>
  			<th align=\"center\">wo </th>
  			<th align=\"center\">do </th>
  			<th align=\"center\">vr </th>
  			<th align=\"center\">za </th>
  			<th align=\"center\">zo </th>
  			</tr>";
  echo "<tr>";

	
  while ($dayforloop<=$endday){
   $body = get_body("$year-$month-$dayforloop");
	 // als de dag niet bij de huidige maand hoort, andere kleur geven
	 if ( ($dayforloop<=0)|(($dayforloop-1)>=$lastdayofthemonth) ) {echo "<td align=\"center\">";
	   echo "<font color=\"#dddddd\">".date ("d", mktime(0, 0, 0, $month, $dayforloop, $year))."</font></td>";}

   
	
	 /*als het vandaag is, dan een mooi randje om de cel maken	 
	 elseif ($dayforloop==$today){ 
	   echo "<td class=\"line\" align=\"center\">";
	   echo "<input title=\"on selected date is no entry\" name=\"this_date\" type=\"submit\" value=\"".
		 date ("d", mktime(0, 0, 0, $month, $dayforloop, $year)).
		 "\"></input></td>";
	   }*/
		 
     // zoniet, dan printen met button	 
	 	 else {
		   echo "<td align=\"center\"";
			 
			 // als het vandaag is, dan een mooi randje om de cel maken
			 if ($dayforloop==$today) echo " class=\"line\" ";
			 echo " ><input ";
			 if (!($body=="no entry")) echo " class=\"dik\" ";
			 echo "title=\"$body\" name=\"this_date\" type=\"submit\" value=\"".
			 date ("d", mktime(0, 0, 0, $month, $dayforloop, $year))."\"></input></td>";
     }
		
	 // wel of niet een nieuwe tablerow starten
	 if (date ("w", mktime(0, 0, 0, $month, $dayforloop, $year))==0)
	 if (($endday>=dayforloop)|(date("w",mktime(0,0,0,$month,$endday,$year))==0)) 
	   echo"</tr>";
	 else echo"</tr><tr>";

   	$dayforloop++; // niet vergeten op te hogen
  }// einde while lus
	
	// nog wat knopjes voor navigatie
	if ($mode=="1"){
	  echo "<tr><td colspan=\"7\"><textarea name=\"body\" rows=\"3\">".get_body("$year-$month-$today")."</textarea></td></tr>";
		echo "<tr><td colspan=\"7\" align=\"center\"><input type=\"submit\" name=\"button\" value=\"edit\"></input></td></tr>";
	}

	echo "<tr><th><input type=\"submit\" title=\"go to previous month\" name=\"button\" value=\"&lt;\"></input></th>";
  echo "<th align=\"center\" colspan =\"5\"><input type=\"submit\" title=\"go to today\" name=\"button\" value=\"today\"></input></th>";
  echo "<th><input type=\"submit\" title=\"go to next month\" name=\"button\" value=\"&gt;\"></input></th>";
  echo "</tr>";
	
  echo "</table>";
	echo "</form>";
}

function edit_date($date,$body){
//------------------------------------
//pre: - 
//post: print een formulier om de inhoud van de datum aan te passen

  // verbinding maken
	connect2db();
	
	// lege records afvangen
	if (($body=="")|($body=="no entry")){ 
		$query = "delete from bbhc_calendar where date = \"$date\"";
		mysql_query($query) or die ("Delete failed: $query");
	} 
	
	//kijken of het update of insert is
	$query = "select * from bbhc_calendar where date=\"$date\"";
	$result = mysql_query($query) or die ("Update failed");
	if (mysql_num_rows($result)==0){
	  $query = "insert into bbhc_calendar (body,date) values (\"$body\",\"$date\")";
		mysql_query($query) or die ("Insert failed: $query");
	}	 
	else { 
	  $query = "update bbhc_calendar set body= \"$body\" where date =\"$date\"";
		mysql_query($query) or die ("Update failed: $query");
	}
}

function get_body($date){
  /*------------------------------------
  pre: - 
  post: geeft een array terug met een resultset van alle data
*/
	  // maak verbinding:
  	connect2db();
	
  $query = "select body from bbhc_calendar where date=\"$date\"";
	$result = mysql_query($query) or die ("Query failed");
	$body = mysql_fetch_array($result);
	if ($body[0]==null) return "no entry"; 
	else return $body[0];
}


function connect2db(){
  
	$user="user";
  $pass="password";
  $db="db";
  $host="localhost";
	
  // ----------
	// pre: -
	// post: maakt verbinding met de database
	
  if (!@mysql_select_db("$db", @mysql_connect("$host", "$user", "$pass"))) { 
    echo "Er kon geen connectie worden gemaakt met de database."; 
    exit(); 
  }
}

////////////////// 
// main 
////////////////// 

// formulier afvangen

// datums afvangen
if (isset($_POST['this_date'])){ 
	 calendar(substr($_POST['this_date'],0,2),substr($_POST['date'],3,2),
		  substr($_POST['date'],6,2),1);
  }
else switch ($_POST['button']){
  case "<":
	  //down
		if ($_POST['month']==1) {$month=12; $year=$_POST['year']-1; $year="0".$year;}
		else {$month = $_POST['month']-1; $year=$_POST['year'];}
		calendar($_POST['day'],$month,$year,0);
	  break;
	case ">":
	  //up
		if ($_POST['month']==12) {$month=1; $year=$_POST['year']+1;$year="0".$year;}
		else {$month = $_POST['month']+1; $year=$_POST['year'];}
		calendar($_POST['day'],$month,$year,0);
	  break;
	case "today":
	  calendar(date("d"),date("m"),date("y"),0);
	  break;
	case "go":
		calendar(substr($_POST['date'],0,2),substr($_POST['date'],3,2),
		  substr($_POST['date'],6,2),0);
		break;
	case "edit": 
	  edit_date(substr($_POST['date'],6,2)."-".substr($_POST['date'],3,2).
		  "-".substr($_POST['date'],0,2),$_POST['body']);
		calendar(substr($_POST['date'],0,2),substr($_POST['date'],3,2),
		  substr($_POST['date'],6,2),0);
		break;	 	
	default:

	  calendar(date("d"),date("m"),date("y"),0);
	  break;
}
?>[/code]

Reacties

0
Nog geen reacties.