Sortering

Tags:    php

Hej Udviklere,

Jeg har et lille sorterings problem, min mysql_query ser således ud:
$readdy = mysql_query("SELECT * FROM pp_lek WHERE EventMonth = '$month' AND EventYear = '$year' AND klasse = '$_SESSION[klasse]' ORDER BY EventDay");

, den skal som i kan se sortere efter EventDay, problemet er så at den sætter rækkefølgen eksempelvis således:
1
10
2
20
3
30
4
5
6

Altså ikke nummerisk rækkefølge som sådan, men 10'erne sætter den sammen med 1'erne




4 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Hvilken type felt er din EventDay? Er det en VARCHAR eller en INTEGER? Det skal være en INTEGER før du får den korrekte sortering.




Hvis jeg var dig ville jeg henter dataerne ud i et array, også bruge natsort() på det array. Så kommer de i den rigtige rækkefølge.



Hej Udviklere,

Jeg har et lille sorterings problem, min mysql_query ser således ud:
$readdy = mysql_query("SELECT * FROM pp_lek WHERE EventMonth = '$month' AND EventYear = '$year' AND klasse = '$_SESSION[klasse]' ORDER BY EventDay");

, den skal som i kan se sortere efter EventDay, problemet er så at den sætter rækkefølgen eksempelvis således:
1
10
2
20
3
30
4
5
6

Altså ikke nummerisk rækkefølge som sådan, men 10'erne sætter den sammen med 1'erne


Prøv CAST (hvis jeg har forstået det korrekt) - f.eks denne lille test

CREATE TABLE `alfa` (
`id` int(11) NOT NULL auto_increment,
`bogstavtal` varchar(5) default NULL,
PRIMARY KEY (`id`)
)

og indsæt en masse rækker med "tal" i "bogstavtal"

select bogstavtal from alfa order by bogstavtal giver f.eks

10
11
15
32
56
7

med CAST kan du få dem sorteret som om de var tal

select bogstavtal from alfa order by cast(bogstavtal as unsigned)

7
10
11
15
32
56

viola! :-)

mvh









Tak for jeres svar, Bosh kom med et svar jeg kunne bruge med den måde opret systemet er til mit system, mange tak for alle jeres svar :)



t