21. maj 2005 - 19:37
Der er
8 kommentarer og 1 løsning
Sorteret efter dag
Hej jeg har dette script <? session_start(); include("class/mysql.class.php"); include("class/system.class.php"); $mysql = new mysql(); $system = new system(); $mysql->mysqlconnect("localhost","fdfikastdk","XXXXXXX","fdfikastdk"); ?> <table border="0" width="100%" style="border: 1px solid #000000; "> <tr><td style="border: 1px solid #000000; font-weight:bold; ">Navn</td> <td style="border: 1px solid #000000; font-weight:bold;">Fødselsdag</td> <td style="border: 1px solid #000000; font-weight:bold;">Alder</td> <td style="border: 1px solid #000000; font-weight:bold;">Afdeling</td> </tr> <? $sql = $mysql->sql("SELECT * FROM Allemedlemmer"); while($rs = mysql_fetch_array($sql)) { $fodsdag_arr = split("-", $rs["Fødselsdag"]); if($fodsdag_arr[1] == date(m)) { ?> </td> <tr> <td style="border: 1px solid #000000; " width="30%"><? echo $rs["Navn"]; ?></td> <td style="border: 1px solid #000000; " width="8%"><? echo $fodsdag_arr[2]."/".$fodsdag_arr[1]."-".$fodsdag_arr[0];?></td> <td style="border: 1px solid #000000; " width="8%"><? echo $alder=date('Y') - $fodsdag_arr[0]; ?></td> <td style="border: 1px solid #000000; " width="8%"><? echo $rs["Afdelingsnavn"];?></td> </tr> <? } ?> <? } ?> </table> Det virker fint, og lister også alle fødselsdage i denne måned, men hvordan for jeg den til at sortere således at personen der har fødselsdag d. 15/7-1981, bliver vist før ham der fødselsdag d. 14/7-1925. Hvis jeg siger order by Fødselsdag, vil den jo tage år 1925, først der denne dato jo kommer før år 1981. men den skal altså se bort fra året.
Annonceindlæg fra Barco
brug "Select * from medlemmer order by [DATE]" [DATE] erstatter du med det din dato kolonne hedder..
Nej, for så vil den gøre som jeg skrev: CITAT: Hvis jeg siger order by Fødselsdag, vil den jo tage år 1925, først der denne dato jo kommer før år 1981. men den skal altså se bort fra året.
Hvilket format står de med i databasen ? Har du forsøgt med ASC og DESC... kan ikke lige huske forskel !
For det første bør du udvælge de rette medlemmer i din SQL - ikke i PHP. Derudover kan du sortere efter DAYOFMONTH: $sql = $mysql->sql("SELECT Navn, DAYOFMONTH(Fødselsdag) AS dag, MONTH(Fødselsdag) as maaned, YEAR(Fødselsdag) AS aar FROM Allemedlemmer WHERE maaned = MONTH(NOW()) ORDER BY dag"); while($rs = mysql_fetch_array($sql)) { ?> </td> <tr> <td style="border: 1px solid #000000; " width="30%"><? echo $rs["Navn"]; ?></td> <td style="border: 1px solid #000000; " width="8%"><? echo $rs['dag']."/".$rs['maaned']."-".$rs['aar'];?></td> <td style="border: 1px solid #000000; " width="8%"><? echo $alder=date('Y') - $rs['aar']; ?></td> <td style="border: 1px solid #000000; " width="8%"><? echo $rs["Afdelingsnavn"];?></td> </tr> <? } ?> </table> Vil jeg sige :) -- Morten Barklund
(jeg går ud fra, at din fødseldag-kolonne er af typen DATE)
barklund: Ja den står som dato: Dit foreslag se godt ud, men den kommer desværre med denne fejl: Unknown column 'maaned' in 'where clause'
$sql = $mysql->sql("SELECT Navn, DAYOFMONTH(Fødselsdag) AS dag, MONTH(Fødselsdag) as maaned, YEAR(Fødselsdag) AS aar FROM Allemedlemmer WHERE MONTH(Fødselsdag) = MONTH(NOW()) ORDER BY dag"); Sådan så virker den. Barklund svarer du?
Hm ja, det er måske meget rigtigt :) -- Morten Barklund
Vi tilbyder markedets bedste kurser inden for webudvikling