Goedenavond allemaal,

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>&nbsp;</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!';
}


?>

*Bump*

Ik ben even verder gegaan, helaas is het mij niet gelukt om meedere data er uit te halen, zoals hier boven is uitgelegd.

Daarnaast ben ik nu ook bezig om afspraken die op de agenda verschijnen een link van te maken, nu heb ik het eigenlijk altijd zo gedaan:
<?php
$query = mysql_query("SELECT * FROM Table");
while($row =mysql_fetch_assoc($query)){
echo '<a href="?id="'. $row['ID'] . '">Blaat</a>';
}
?>
Het is mij gelukt om de links nu te laten zien, alleen zodra ik 2 afspraken heb wordt de link 2 keer geecho'd.
Bijvoorbeeld:
Afspraak 1: 2010-01-20
Afspraak 2: 2010-01-21
En dan laat hij het als volgt zien;
Op de 20ste staat dit:
Afspraak 1: 2010-01-20
Afspraak 1:2010-01-20
En op de 21ste staat:
Afspraak 2 2010-01-21
Afspraak 2 2010-01-21

Zoals je kunt zien staat nu alles dubbel, alleen heb ik geen idee hoe dit komt.

Relevante code:
<?php
foreach($array_afspraken as $datum => $afspraken){
foreach($afspraken as $afspraak){
//als de dag, maand en jaar kloppen, echo de afspraak
$query = mysql_query("SELECT Afspraken_ID, Datum FROM afspraken") or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
$exp = explode('-', $row['Datum']);
if($exp[2] == ($i - $start_dag_maand + 1) && $exp[1] == ($maand) && $exp[0] ==($jaar)){
echo '<a href="?pagina=view&id=' . $row['Afspraken_ID'] . '">' . substr($afspraak , 0, 5) . '</a><br>';
}
}
}
}
?>

Reageren