19. maj 2006 - 10:05Der er
2 kommentarer og 1 løsning
Sql datovisning problem
Hej eksperter,
jeg har et problem i det jeg ikke kan få en dato til at blive vist korrekt.
Min sql ser på nuværende tidspunkt således ud;
<? $sqlstr = "SELECT * FROM NewsEvent WHERE StatusFlag='1' AND (CURDATE()>=OnlineDate AND CURDATE()<=OfflineDate) ORDER BY ListOrder"; $res = mysql_query($sqlstr); while ($list_data=mysql_fetch_array($res)){ $EventDateFrom = FormatDatetime($list_data[EventDateFrom]); $EventDateEnd = FormatDatetime($list_data[EventDateEnd]); $Title = $list_data[Title]; $Place = $list_data[Place]; $EventDesc = nl2br($list_data[EventDesc]); $EventImage = ResizeImage("news",GetString($list_data[EventImage],"white.gif"),"200","150"); $EventMMO = GetString($list_data[EventMMO],""); ?>
Dato'en vises: 06-01-2006 til 06-01-2006. Jeg vil gerne have den til at vise 01-06-2006 i stedet. I phpMyadmin ser min dato således ud: 2006-06-01 00:00:00.
Her skriver den dato'en ud: <? if ($EventDateEnd!="") { echo "$EventDateFrom til $EventDateEnd"; }else{ echo $EventDateFrom; } ?>
Jeg tror du skal have rettet lidt i din SQL. Fordi MySQL arbejder med dato som strenge (20060519 10:14:50) mens php bruger Unixtimestamp, dvs. antal sekunder siden 1970. Derfor skal du i din SQL have den til at konvertere din dato til unixtime-format. Derfor: SELECT Title, Place, UNIX_TIMESTAMP(EventDateFrom) as EventDateFrom, UNIX_TIMESTAMP(EventDateEnd) as EventDateEnd, ... FROM NewsEvent ...
Derudover kunne man kigge på din FormatDatetime funktion. Er det en du selv har lavet? Men prøv at erstatte FormatDatetime(...) med: $EventDateFrom = date('m-d-Y', $list_data['EventDateFrom']);
Tilsidst, når du henter data fra $list_data, skal du sørge for at det sker rigtigt: $list_data[EventDateFrom]; // Denne går ud fra, at der er en konstant der hedder EvenDateFrom og bruger dens værdi. $list_data['EventDateFrom']; // Denne bruger strengen EventDateFrom...
Din FormatDatetime er en stor omvej. Brug i stedet date()-funktionen som jeg beskrev længere oppe. Den er nemlig så smart, at du selv bestemmer 100% hvordan datoformatet returneres. Den kræver blot, at datoen du sender til den er i timestamp, så du skal huske at konvertere SQL-data (se mit forrige svar).
Synes godt om
Ny brugerNybegynder
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.