Versio

Agenda optimaliseren

Overzicht Reageren

Gerben J

Gerben J

24/05/2010 14:18:46
Quote Anchor link
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.
 
PHP hulp

PHP hulp

23/05/2012 20:38:34
Gesponsorde koppelingen:
 
Karl Karl

Karl Karl

24/05/2010 14:30:22
Quote Anchor link
Je zou bijvoorbeeld naar between kunnen kijken (zou dus ook een where kunnen zijn).
 
Gerben J

Gerben J

24/05/2010 14:51:37
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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.
Gewijzigd op 24/05/2010 14:51:47 door Gerben J
 
Jelmer rrrr

Jelmer rrrr

24/05/2010 14:54:09
Quote Anchor link
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.
 
Gerben J

Gerben J

24/05/2010 15:11:52
Quote Anchor link
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?
 
Marien xD

Marien xD

24/05/2010 15:29:53
Quote Anchor link
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 :))
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?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>';
        }
    }
}

?>
Gewijzigd op 24/05/2010 15:31:13 door Marien xD
 
Gerben J

Gerben J

24/05/2010 16:05:52
Quote Anchor link
Het werkt! Hartelijk dank allen!
 



Overzicht Reageren

Get Adobe Flash player