Avatar billede kimdolleris Nybegynder
26. april 2010 - 23:34 Der er 6 kommentarer og
1 løsning

Gruppering af datoer fra mysql db

Hej!

Jeg sidder med en lille udfordring. Jeg vil gerne liste en række events efter dato, men også i grupper af måneder.

Ønskesenariet er:

<ul>
<li>April 2010</li>
<li>0404 event</li>
<li>0504 event</li>
<li>0604 event</li>
<li>Maj 2010</li>
<li>0705 event</li>
<li>2105 event</li>
<li>2505 event</li>
</ul>

Her er min php-kode:

$getdata = mysql_query("SELECT * FROM events WHERE dato > '$today' ORDER BY dato ASC LIMIT 200") or die(mysql_error());
    if(mysql_num_rows($getdata) == 0)
    {
        print"Ingen events...";
    }
    else
    {
        print"<ul>\n";
        while($row = mysql_fetch_array($getdata))
        {
            print"<li><a href='#event".$row['id']."'><span class='eventdatelist'>".$row['dato']."</span>".$row['navn']."</a></li>\n";
        }
        print"</ul>\n";

    }

Jeg kan simpelthen ikke gennemskue hvordan jeg får den flettet ind?

Nogen med nogle bud? pft!
Avatar billede arne_v Ekspert
27. april 2010 - 01:47 #1
$getdata = mysql_query("SELECT YEAR(dato),MONTH(dato),dato,navn FROM events WHERE dato > '$today' ORDER BY dato ASC LIMIT 200") or die(mysql_error());

og så lader du din PHP kode udskrive en overskrift hvergang der starter en ny måned.
Avatar billede arne_v Ekspert
27. april 2010 - 01:51 #2
$getdata = mysql_query("SELECT YEAR(dato) AS y,MONTH(dato) AS m ,dato,navn FROM events WHERE dato > '$today' ORDER BY dato ASC LIMIT 200") or die(mysql_error());

og:

$lastyear = -1;
$lastmonth = -1;
while($row = mysql_fetch_array($getdata))
{
    if($lastyear != $row['y'] || $lastmonth != $row['m']) {
          // udskriv $row['y'] og $row['m']
          $lastyear = $row['y'];
          $lastmonth = $row['m'];
    }
    print"<li><a href='#event".$row['id']."'><span class='eventdatelist'>".$row['dato']."</span>".$row['navn']."</a></li>\n";
}
Avatar billede kimdolleris Nybegynder
27. april 2010 - 11:29 #3
Har prøvet at sætte det ind, men uden held.

Kan ikke lige gennemskue, hvor bliver "måneds<li>'en" smidt ind?

den linie der bliver printet er kun til eventlinierne


pft!

Kim
Avatar billede arne_v Ekspert
27. april 2010 - 14:50 #4
Du skal erstatte:

// udskriv $row['y'] og $row['m']

med noget der faktisk udskriver !
Avatar billede Slettet bruger
27. april 2010 - 14:51 #5
Som @arne_v har skrevet:
"// udskriv $row['y'] og $row['m']"

Betyder du selv skal sætte noget ind der.
Alt du vælger at udskrive inde i den IF vil kun blive vist hver gang man støder på en ny månede.
Avatar billede kimdolleris Nybegynder
27. april 2010 - 15:04 #6
Selvfølgelig!

Perfekt!! Tak!

Hvis du lige svarer....


=) Kim
Avatar billede arne_v Ekspert
27. april 2010 - 15:08 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester