Avatar billede maniactor Nybegynder
06. september 2006 - 20:39 Der er 20 kommentarer og
1 løsning

Sortering i formatet xx-xx-xx så det bliver rigtigt?

Hejsa.

Håber her er en PHP kyndig :D.

Jeg har lidt problemer med en side, hvor resultaterne skal sorteres efter min `dato`. Men da den er tinytext og i formatet 01-01-06, så sorteret den kun efter de første 2 tal, altså f.eks. 01.
Jeg bruger bare den alm "select * from tabel order by dato asc" osv.

Hvad gør jeg for at få den til at sortere det ordenligt, så den 17-09-06 ikke er efter 15-10-06?

På forhånd tak.
Avatar billede moocher Nybegynder
06. september 2006 - 20:52 #1
Hmm jeg ville starte med at konvertere dato væk fra tinytext og over til et dato felt :) Gør det hele noget lettere :)

http://dk.php.net/manual/da/function.date.php

Hvis du vil lære at bruge datoer i PHP ;)
Avatar billede leif Seniormester
06. september 2006 - 20:52 #2
En mulighed er selvfølgelig at have datoerne som date i databasen og så vende dem ved udskrivning (Er den løsning jeg normalt bruger)

Kan ikke lige se en nem løsning den anden vej.
Avatar billede masik7 Nybegynder
06. september 2006 - 20:55 #3
ORDER BY dato DESC, måske
Avatar billede maniactor Nybegynder
06. september 2006 - 21:27 #4
Jeg ved godt dato er nemmere, men problemet er at man skal kunne skrive en dato ud i fremtiden, og jeg kan ikke lige sige hvad "koden"/nummeret på den dato er..

Hvordan er "strukturen" i et dato felt? Jeg har førhen brugt tinyint til samme, altså fra time() funktionen. Men det er denne jeg ikke kan "koden"/nummeret på, på en dag ude i fremtiden. Kan man gå den anden vej og få lavet f.eks. 10-09-06 til samme talkode som fra time() ?

masik7 -> Det er den jeg bruger. Den sorterer kun efter de første tal, så dvs at 10-10-05 kommer før 09-10-06 :(.
Avatar billede Slettet bruger
07. september 2006 - 00:16 #5
Som der bliver sagt skal du vælge dato type date og hvis du skal have tid på også, skal man vælge datetime, i databasen for det felt hvor du vil have din dato.

Så sorter den nemlig korrekt osv.
Avatar billede maniactor Nybegynder
07. september 2006 - 07:24 #6
coldgate -> Det var sku dejligt, som moocher også skrev hjalp det med at lave den til et dato felt. Men kan man nu lave "strukturen" om, så det ikke er åååå-mm-dd format, men dd-mm-åååå?
Avatar billede shooka Nybegynder
07. september 2006 - 16:42 #7
Du skal bruge denne linie:

list($yy, $mm, $dd)=explode("-", $dato);

Så er $yyyy årstallet, $mm er måneden i tal, og $dd er dagen i tal
Avatar billede shooka Nybegynder
07. september 2006 - 16:44 #8
Så skal det jo være:

list($yyyy, $mm, $dd)=explode("-", $dato);

og ikke:

list($yy, $mm, $dd)=explode("-", $dato);
Avatar billede Slettet bruger
07. september 2006 - 22:59 #9
Du kan også bare:
//$r['dato'] = din dato fra udtrækket.
echo date("d/m/Y", strtotime($r['dato']));

Flere dato-formater her: http://dk2.php.net/date
Avatar billede maniactor Nybegynder
08. september 2006 - 07:16 #10
Jeg er desværre ikke helt med på de sidste par svar, det ligner nærmere volapyk :D. Men vil lige tilføje at datoen skriver jeg selv, f.eks. 2006-09-08, og er ikke fra time() eller date().. Jeg vil dog gerne ha den til at stå som 08-09-2006. Coldgates lyder meget rigtig, men jeg fatter det ikke helt :D.
Avatar billede Slettet bruger
08. september 2006 - 08:10 #11
Først og fremmest har du ændret din data type til 'date' i databasen?
Min vil så skrive 08/09/2006, men denne vil gøre som du vil:
echo date("d-m-y", strtotime($r['dato']));

Altså du laver:

$query = mysql_query("SELECT * FROM table ORDER BY dato ASC"); //Hvis dato feltet i databasen ikke er af type date, så vil den sorter datoen som var det en streng, hvor 2005 kommer før 2006.
$r = mysql_fetch_array($query);
echo date("d-m-y", strtotime($r['dato']));
Avatar billede maniactor Nybegynder
08. september 2006 - 12:51 #12
Årh tak for hjælpen coldgate. Det er perfekt og lige hvad jeg søgte. Tak fordi du gad skære det ud i pap!

Nu er der bare et lille problem.. Kan du ikke lige oprette et "svar" så jeg kan acceptere dig som den rigtige svarer :).
Avatar billede Slettet bruger
08. september 2006 - 16:59 #13
Det kan du tro jeg vil.
Som jeg skrev ang. dato-formater: http://dk2.php.net/date, som du kan se i mine kommentarer "echo date("d-m-y", strtotime($r['dato']));"
Der vælger vi funktionen date, det har så 2 parameter, som du kan se i linket.
Det første er vores format, og det næste er valgfrit. Er det udfyldt så kan vi bestemme en dato, er det bare tomt så er det dato + tid lige nu. (altså paramater 2 er valgfrit)

I vores tilfælde har vi valgt dag-måned-år. (d-m-y), hvis vi f.eks. ændre "y" -> "Y" => får vi "2006" frem for "06".

Osv. osv.
Avatar billede Slettet bruger
10. september 2006 - 02:23 #14
Fundet ud af det? ^^
Avatar billede maniactor Nybegynder
10. september 2006 - 20:20 #15
Yeps coldgate, den er i vinkel.. Endnu en gang tusind tak for hjælpen!! :)
Avatar billede moocher Nybegynder
25. september 2006 - 12:06 #16
Luk venligst spørgsmålet maniactor :)
Avatar billede maniactor Nybegynder
25. september 2006 - 20:42 #17
Jeg har klikket accepter mange gange, men hver gang er det bare som om der sker intet :S.. Jeg fatter ikke det her skod system.. Det virker hverken i IE eller FF :D.
Avatar billede moocher Nybegynder
25. september 2006 - 21:30 #18
Har du husket at markere en person :)
Avatar billede Slettet bruger
25. september 2006 - 23:17 #19
Ja det er nmelig vigtigt, at vælge en person ;D
Avatar billede maniactor Nybegynder
26. september 2006 - 08:49 #20
Amen jeg var da sikker på den var markeret når den stod på personen..
Min fejl :D, men det sku vist være lukket nu?
Avatar billede Slettet bruger
26. september 2006 - 12:59 #21
Jeps det er det også, og mange tak for points.
Håber det var en god hjælp.
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