Avatar billede dotcom1 Nybegynder
23. november 2004 - 15:28 Der er 9 kommentarer og
2 løsninger

Sortere dato fra MySQL

Ville gerne sortere og vise indholdet i min database efter dato, så det nyeste vises først. Har prøver med denne kode, men den sorterer ikke rigtigt:

$newest = mysql_query("SELECT *, date_format(date, '%d-%m-%Y') AS date FROM `downloads` ORDER BY `date` DESC LIMIT 0,5") or die (mysql_error());

            while($vis = mysql_fetch_object($newest)) {
            echo "&#8226; ". $vis->date .":&nbsp;". $vis->titel ."<br>\n";
        }
        mysql_free_result($newest);

Det er meningen at først skal datoen vises og derefter titlen.
Avatar billede schaefner Juniormester
23. november 2004 - 15:29 #1
Det er fordi du formaterer din dato og sorterer på den. Prøv:

$newest = mysql_query("SELECT *, date_format(date, '%d-%m-%Y') AS fdate FROM `downloads` ORDER BY `date` DESC LIMIT 0,5") or die (mysql_error());

            while($vis = mysql_fetch_object($newest)) {
            echo "&#8226; ". $vis->fdate .":&nbsp;". $vis->titel ."<br>\n";
        }
        mysql_free_result($newest);
Avatar billede coderdk Praktikant
23. november 2004 - 15:29 #2
De kommer rigtig ud - Du skal sortere efter dit oprindelige felt, sådan:

$newest = mysql_query("SELECT *, date_format(date, '%d-%m-%Y') AS dato FROM `downloads` ORDER BY `date` DESC LIMIT 0,5") or die (mysql_error());
while($vis = mysql_fetch_object($newest)) {
            echo "&#8226; ". $vis->dato .":&nbsp;". $vis->titel ."<br>\n";
        }
        mysql_free_result($newest);
Avatar billede schaefner Juniormester
23. november 2004 - 15:30 #3
Eller hvis du har et unikt id for hver række, burde du også kunne sortere på det.
Avatar billede coderdk Praktikant
23. november 2004 - 15:30 #4
lol schaefner :)
Avatar billede schaefner Juniormester
23. november 2004 - 15:33 #5
Formatet i din database ligger sådan YYYY-MM-DD (evt. også klokkeslet).

Du formaterer så datoen med DATA_FORMAT og bruget den formaterede dato til at sortere efter. Den ligger i formatet D-M-YYYY. Så kan 30-11-2001 godt ligge før 18-11-2004, da 30 kommer før 18 :)

$newest = mysql_query("SELECT *, DATE_FORMAT(date, '%d-%m-%Y') AS fdate FROM `downloads` ORDER BY `date` DESC LIMIT 0,5") or die (mysql_error());
while($vis = mysql_fetch_object($newest)) {
  echo "&#8226; ". $vis->fdate .":&nbsp;". $vis->titel ."<br>\n";
}
mysql_free_result($newest);

Med venlig hilsen
Jesper Sørensen
Avatar billede dotcom1 Nybegynder
23. november 2004 - 15:34 #6
Det gik sandelig hurtigt! Shaefner, læg et svar. :-)
Avatar billede dotcom1 Nybegynder
23. november 2004 - 15:57 #7
Shaefner >> Der er vel ikke forskel på din første og anden kode, er der? (Ud over en grundig forklaring.) :-)
Avatar billede schaefner Juniormester
23. november 2004 - 15:59 #8
Nej, faktisk ikke. Spørg ikke hvorfor jeg postede den igen :)
Avatar billede dotcom1 Nybegynder
23. november 2004 - 17:02 #9
Helt i orden. Men svar lige - vil gerne give dig points...
Avatar billede schaefner Juniormester
23. november 2004 - 17:12 #10
Jeg har da lagt et svar :)
Avatar billede dotcom1 Nybegynder
23. november 2004 - 17:16 #11
Argh, der havde du da også. Undskyld! Men tak for hjælpen anyways.
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