Avatar billede nightcoder Nybegynder
23. september 2007 - 14:38 Der er 7 kommentarer og
1 løsning

listing af år og måneder

Hej eksperter..

Jeg har en tabel i min db, som indeholder et felt med dato´er, af typen date. Når jeg udskriver i en løkken kan det f.eks. se således ud.

2007-5-10
2007-6-24
2007-6-25
2008-1-3
2008-2-7
2008-2-8

Jeg kunne godt tænke mig at få det udskrevet i min løkke, så det blev listet på år og måneder som overskrifter. Men mit problem er at overskrifterne jo kun skal gå igen en enkelt gang hvis der er flere punkter under samme overskrift.

Ville gerne stille det op således når jeg udskriver:
2007
-maj
2007-5-10
-juni
2007-6-24
2007-6-25

2008
-januar
2008-1-3
-februar
2008-2-7
2008-2-8

Håber der er nogen som kan hjælpe.
Avatar billede nielle Nybegynder
23. september 2007 - 14:51 #1
Noget i denne stil?

$sql = "SELECT *, year(ditDatoFelt) AS aar, month(ditDatoFelt) AS maaned FROM dinTabel ORDER BY ditDatoFelt";
$query = mysql_query($sql) or die(mysql_error());

$prevArr = 0;
$prevMonth = 0;

while ($row = mysql_fetch_assoc($query))
{
    $year = $row["aar"];
    $month = $row["maaned"];

    // Udskriv overskrifterne...

    if ($year != $prevYear || $month != $prevMonth)
    {
        if ($year != $prevYear)
            echo "$year<br>";

        switch ($month)
        {
            case 0 :
                echo "januar<br>";
                break;
            case 1 :
                echo "februar<br>";
                break;
            osv. ...
        }

        $prevYear = $year;
        $prevMonth = $month;
    }

    // Her udskrives posterne for hver dato ...

    echo $row["ditDatoFelt"] . "<br>";
    osv. ...
}
Avatar billede nightcoder Nybegynder
23. september 2007 - 16:57 #2
Det er næsten helt perfekt.. Men den udskriver ikke månederne for 2008, det virker dog fint i 2007?
Avatar billede nightcoder Nybegynder
23. september 2007 - 17:17 #3
Tror måske det er noget med case 0 der fejler.
Avatar billede nielle Nybegynder
23. september 2007 - 17:19 #4
Skriver den da de andre måneder korrekt ud, eller er de off med 1?
Avatar billede nightcoder Nybegynder
23. september 2007 - 17:21 #5
Den hopper over januar.. Det ser således ud når man udskriver.

Februar
2008-01-09
2008-02-14

Oktober
2008-10-16
Avatar billede nielle Nybegynder
23. september 2007 - 17:35 #6
Ja, så er de jo forskubbet med 1. Det er bare switchen der skal laves om:

        switch ($month)
        {
            case 1 :
                echo "januar<br>";
                break;
            case 2 :
                echo "februar<br>";
                break;
            osv. ...
        }
Avatar billede nightcoder Nybegynder
23. september 2007 - 17:43 #7
Mange tak :-) Smid et svar
Avatar billede nielle Nybegynder
23. september 2007 - 17:44 #8
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