Avatar billede soduno Novice
17. marts 2011 - 00:00 Der er 9 kommentarer og
1 løsning

Udskrift over events fra sql grupperet efter måneder

Hejsa.

Jeg er i gang med at lave en oversigt over alle oprettede arrangementer.
Når jeg udskriver dem skal de grupperes efter måneder, dvs. noget i stil som:

Januar 2010
Arr1
Arr2

Februar 2010
Arr1
Arr2

Marts 2011
Arr1
Arr2

Er lidt blank på hvordan jeg får det implementeret i min nuværende simple php/sql kode:

$sql = "SELECT * FROM `cms_events` WHERE `date` > '". $timenow ."'";
$query = mysql_query($sql) or die(mysql_error());
while($data = mysql_fetch_assoc($query)){
           
    echo $data["head"];
    echo "<br />";
}

Har alle arrangementernes dato'er liggende som time() format.
På forhånd tak!

Venlig Hilsen
Simon
Avatar billede showsource Seniormester
17. marts 2011 - 06:56 #1
F.eks. ( går ud fra dato er gemt som sekunder ? )

while($data = mysql_fetch_assoc($query)){

echo (!isset($maaned) || $maaned != date("n", $data["date"]) ? "<div>".date("n", $data["date"])."</div>" : "");
           
    echo $data["head"];
    echo "<br />";

$maaned = date("n", $data["date"]);

}
Avatar billede soduno Novice
17. marts 2011 - 08:23 #2
Tak for løsningen - smid lige et svar.
Nu har jeg f.eks en funktion der hedder dkmonth(); der henter hvilken måned vi er i og oversætter
det til dansk - ved du hvordan man får den implementeret? Har prøvet at lejre dem om forskellige $data["date"]'s men det virker ikke rigtig...
Avatar billede showsource Seniormester
17. marts 2011 - 09:06 #3
det er vel en funktion a'ala:

function dkmmonth($var) {
$m = array(1 => "januar", 2 => "Februar", 3 => "Marts"); //o.s.v.

return $m[$var];

}

også sidenhen:

echo dkmonth(date("n", $data["date"]));

Men vil da gerne anbefale:

// connect til db

mysql_query("set lc_time_names='da_DK'") or die (mysql_error());

$test = mysql_query("SELECT DATE_FORMAT(CURDATE(), '%M') as maaned") or die (mysql_error());

echo mysql_result($test,0);


Og iøvrigt:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Avatar billede soduno Novice
17. marts 2011 - 09:28 #4
Men hvis jeg implementerer f.eks som du selv skriver dkmonth(date(""n...) så kategoriserer den ikke arrangementerne, men skriver månederne ud for alle de events der er oprettet...
Avatar billede showsource Seniormester
17. marts 2011 - 11:05 #5
Øhmm, du ville gerne hente arrangementer for hver måned ?

while() {
$showmonth = dkmonth(date("n", $data["date"]));

echo ($showmonth != dkmonth(date("n", $data["date"])) ? "<div>".dkmonth(date("n", $data["date"]))."</div>" : "");

}


Altså, vis månedsnavn, og derefter arrangementer ?

"kategoriserer den ikke arrangementerne" er en helt anden snak.
Avatar billede soduno Novice
17. marts 2011 - 11:18 #6
Jes " vis månedsnavn, og derefter arrangementer " er det jeg mente.
hvis jeg gør hvad du forslår til sidst, med dkmonth funktionen, så giver den mig dette res:

Marts

Sing Sing Sing
MartsMarts

Testarrangement
MartsMarts

Miles Davis
MartsApril

Bobo moreno
AprilAugust

asdasdc
AugustNovember

Tip Toe Big Band goes Dubstep feat: Pops Jabu (rap)
NovemberDecember

Lis Sørensen
December
Avatar billede showsource Seniormester
18. marts 2011 - 07:14 #7
Du må lige vise den kode du bruger.
Avatar billede soduno Novice
18. marts 2011 - 12:11 #8
Kode jeg bruger:

$sql = "SELECT * FROM `cms_events` WHERE `date` > '". $timenow ."' ORDER BY `date` ASC";
            $query = mysql_query($sql) or die(mysql_error());   
            while($data = mysql_fetch_assoc($query)){
               
                echo (!isset($maaned) || $maaned != dkmonth(date("n", $data["date"])) ? "<div>".dkmonth(date("n", $data["date"]))."</div>" : "");
           
                echo $data["head"];
                echo "<br />";

                $maaned = dkmonth(date("n", $data["date"]));
               
            }

Her er den funktion jeg bruger til at hente danske månedsnavne med:


function dkmonth($month){

    $maaneder = array("Januar","Februar","Marts","April","Maj","Juni","Juli","August","Oktober","September","November","December",);
    $pos = $month-1; //Er det i Marts giver date funktionen 3, trækkes 1 fra har vi positionen i arrayet ovenfor
   
    echo $maaneder[$pos]; //Skriv resultat

}
Avatar billede showsource Seniormester
18. marts 2011 - 16:32 #9
I dkmonth(), så brug return i stedet for echo:


return $maaneder[$pos];
Avatar billede soduno Novice
18. marts 2011 - 21:00 #10
Selvfølgelig, hvorfor tænkte jeg ikke på det - Tak for det :)
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