Beste PHP'ers,

Ik ben bezig met een agenda waarin per maand de activiteiten worden getoond. De activiteiten komen uit een database. Het lijkt me het beste om in één keer alle activiteiten van de maand uit de database te halen, in plaats van bij elke dag (30 of 31 keer).

Per dag wordt er via een for-loop de activiteiten getoond. Maar hoe toon ik de activiteiten dan bij de dagen?

Alvast bedankt.
Je zou bijvoorbeeld naar between kunnen kijken (zou dus ook een where kunnen zijn).
Dat is niet het probleem. Ik zal het proberen duidelijker uit te leggen. Met deze code toon ik een divje voor elke dag. Daarin moet de activiteit komen.


<?php
for($i=1;$i<=($no_of_days);$i++)
// In dit geval, herhaal loop 31 keer, voor elke dag één
{
	echo '<div class="day">ACTIVITEIT</div>';
}
?>


Nu wil ik graag de activiteit tonen waar nu het woord 'activiteit' staat. Maar ik wil niet bij elke keer dat de bovenstaande for-loop uitgevoerd wordt, verbinding maken met database. Ik wil in één keer alle activiteiten van deze maand uit de databse halen en dat lukt. Maar hoe toon ik per dag in de loop de activiteit van die dag?

Ik hoop dat het nu iets duidelijker is.
Haal eerst in één keer al je activiteiten die er zijn op, stop ze in een array, en kijk in de for-lus of er in de array een activiteit voor die dag zit.
Dank Jelmer, ik ben al een stuk verder.

Maar hoe kijk ik per dag of er activiteit is? Met MySQL kun je een voorwaarde (where date = 2010-05-05) opgeven, met een array niet?
dan zorg je dat je een key in je array heb met die datum. In de array zet je alle items die op die dag komen.

Als opzetje: (wel even zelf correct afmaken :))
<?php
//vullen
$opzoeken = array();

while($var = mysql_fetch_array($query))
{
//als dag niet bestaat in array: aanmaken
if(!array_key_exists($var['datum_van_database'], $opzoeken))
{
$opzoeken[$var['datum_van_database']] = array();
}

//item aan de dag toevoegen
$opzoeken[$var['datum_van_database']][] = $var['activiteits_details'];
}

//uitlezen
for($i=1;$i<=($no_of_days);$i++)
// In dit geval, herhaal loop 31 keer, voor elke dag één
{
//mocht de dag bestaan, uitlezen
if(array_key_exists(date('...'),$opzoeken))
{
//alle items op 1 dag doorlopen en weergeven
foreach($opzoeken[date('...')] as $item)
{
echo '<div class="day">'. $item .'</div>';
}
}
}
?>
Het werkt! Hartelijk dank allen!

Reageren