Ik ben bezig met een agenda te maken in PHP, nu werkt inprincipe alles, geeft de juiste dagen weer en lege ruimtes als de eerste dag van de maand op een andere dag valt, etc.
Maar nu wil ik ook een optie om bij een bepaalde dag een afspraak neer te zetten.
Ik heb voor het testen even een DB en tabel aangemaakt, die wat gevuld met gegevens, alleen nu heb ik het probleem bij het laten zien van de afspraken op de dagen.
Als ik bijvoorbeeld, op de 17de in Januari een afspraak heb, moet dat worden laten zien.
Nu lukt het mij wel om 1 afspraak te laten zien, alleen zodra er meerder afspraken zijn, gaat dit mis.
Misschien is het verhaal niet helemaal duidelijk, ik zal voor de duidelijkheid ook wat PHP code mee sturen.
PHP:
<?php
//alle maanden in array zetten
//wordt later gebruikt
$maanden = array("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","October","November","December");
//pak de maand en datum uit de get global
//maar eerst kijken of ze wel bestaan
if(!isset($_GET['maand']) && !isset($_GET['jaar'])){
$_GET['maand'] = date('n');
$_GET['jaar'] = date('Y');
}
//stukje beveiliging, globale get variabeles moeten int zijn
if(is_numeric($_GET['maand']) && is_numeric($_GET['jaar'])){
//volgende en vorige berekeningen maken
$maand = $_GET['maand'];
$jaar = $_GET['jaar'];
//geef maand volgende en vorige
$volgende_maand = $maand + 1;
$vorige_maand = $maand - 1;
//geef jaar volgende en vorige, NIET BEREKENEN
$volgende_jaar = $jaar;
$vorige_jaar = $jaar;
//als de maand 0 is dan wordt maand 12 en jaar -1
if($vorige_maand == 0){
$vorige_maand = 12;
$vorige_jaar = $jaar-1;
}
//kijk waar maand op is, dit beinvloed jaar variabele
if($volgende_maand == 13){
$volgende_maand = 1;
$volgende_jaar = $jaar + 1;
}
//echo maand en jaar, $maand komt uit de array $maanden, $maanden telt 11, $maand telt 12, dus -1
echo '
<center><h1>' . $maanden[$maand - 1] . ' ' . $jaar .'</h1></center>
<table colspan=7 align="center" height=500 width=800 border=1>
<tr>
<td><b>Zondag</b></td>
<td><b>Maandag</b></td>
<td><b>Dinsdag</b></td>
<td><b>Woensdag</b></td>
<td><b>Donderdag</b></td>
<td><b>Vrijdag</b></td>
<td><b>Zaterdag</b></td>
</tr>
';
//geef de unix timestamp voor de maand en jaar van nu
$tijdnu = mktime(0,0,0,$maand,1,$jaar);
//kijk hoeveel dagen er maximaal in de maand zitten (bijv; 31,30)
$max_aantal_dagen = date('t', $tijdnu);
//geef de maand van vandaag, (KOMT IN ASSOC ARRAY), wday nodig
$datum_maand = getdate($tijdnu);
//pak de begin dag, wday geeft nummers van 0 tot 6, 0 voor zondag, 6 voor zaterdag
//bepaal de start dag van de maand
$start_dag_maand = $datum_maand['wday'];
//pak de datum van vandaag, alleen de dag
$datum_vandaag = date('d');
mysql_connect('xxx','xxx','xxx') or die(mysql_error());
mysql_select_db('xxx') or die(mysql_error());
/* ----------------------------------------------------------------- */
$query = mysql_query("SELECT * FROM afspraken") or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
$naam = $row['naam'];
$omschrijving = $row['omschrijving'];
$date = $row['datum'];
$exp = explode('-', $date);
}
/* ------------------------------------------------------------------ */
echo '<br/>';
print_r($exp);
//begin for loop om de maand structuur op te zetten
for($i = 0; $i<($max_aantal_dagen + $start_dag_maand); $i++){
//als er geen rest overblijft, dus 0, dan is er een nieuwe week begonnen
//($datum_maan['wday'] = 0, zondag - 6, zaterdag
// 0 = begin van de week
// 6 = einde van de week
if($i % 7 == 0){
echo '<tr>';
}
//als i kleiner is dan start dag, dan vallen die dagen niet in de maand
//wat dus betekend dat het een leeg vakje nodig heeft
if($i < $start_dag_maand){
echo '<td> </td>';
//als de dag gelijk is aan de berekening, dan maak die dag bold(<b></b>)
}elseif(($i - $start_dag_maand + 1) == $datum_vandaag){
echo '<td><b><u>' . ($i - $start_dag_maand + 1) . '</u></b></td>';
//zo niet, dan moeten de dagen van de maand er in komen te staan
//deze dagen worden niet bold (<b></b>)
//voorbeeld van berekening, $i = 5, $start_dag_maand = 5
//berekening wordt, 5 - 5 + 1, = 1, dus dat is de eerste dag van de maand
}else{
echo '<td>';
if($exp[2] == ($i - $start_dag_maand + 1) && $exp[1] == ($maand) && $exp[0] ==($jaar)){
echo ($i - $start_dag_maand + 1) . '<br><font size=1>' . $naam . '<br>' . $omschrijving . '</font>';
}else{
echo ($i - $start_dag_maand + 1);
}
echo '</td>';
}
//als $i op een rest van 6 uitkomt, dan moet de rij afgesloten worden
//($datum_maand['wday']) = 0, zondag - 6, zaterdag.
// 6 = einde van de week, 0 is begin van de week
if($i % 7 == 6){
echo '</tr>';
}
}
//uiteindelijk de tabel afsluiten
echo '</table>';
echo '
<table align="center">
<tr>
<td><a href="agenda.php?maand='. $vorige_maand . '&jaar='. $vorige_jaar. '">Vorige</a></td>
<td><a href="agenda.php?maand='.$volgende_maand.'&jaar='.$volgende_jaar.'">Volgende</a></td>
</tr>
</table>
';
//globale get variabele is geen nummer, toegang geweigerd
}else{
echo '<br>Toegang geweigerd!';
}
?>