Faire un tri successif en PHP

Fermé
nanor21 Messages postés 16 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 15 mai 2006 - 6 mai 2006 à 00:52
 Nanor 21 - 2 juin 2008 à 11:52
Bonjour a tous,
Je souhaite faire apparaitre des creneaux horaires dans un menu deroulant.
Ces creneaux horaires sont pris dans une base de donnees.
L'ennui c'est que ces heures sont notees en systeme americain:
ce qui fait que lorsque je demande un tri alphabetique:
je me retrouve avec : 02:00 P.M avant 11:00 A.M.
J'aimerais qu'il me fasse un premier tri en fonction de A.M puis un deuxieme en fonction P.M,
Voici mon code pour le moment,

"SELECT * FROM Matable WHERE Hour ORDER BY Hour ";

Pouvez vous m'aidez a resoudre ce probleme s'il vous plait.
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
6 mai 2006 à 13:37
Salut,

ton tri n'est pas alphabetique mais plutôt asciibetique.

c'est normal d'avoir 02:00 P.M avant 11:00 A.M

puisuqe 0 est avant 1 dans l'ordre asciibetique

Donc tu peux faire 2 requêtes

une pour AM
SELECT * FROM Matable WHERE Hour LIKE '%AM' ORDER BY Hour 
et une pour PM
SELECT * FROM Matable WHERE Hour LIKE '%PM' ORDER BY Hour 
lami20j
0
nanor21 Messages postés 16 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 15 mai 2006 1
6 mai 2006 à 19:02
Salut,
Je comprends bien ta methode mais l'ennui c'est que je voudrais reunir ces deux requetes dans une seule afin que ces deux requetes puissent aller dans le meme menu deroulant.
existe t il un mot de liaison en php du genre THEN (et puis) pour permettre quelque chose du genre afin que php reconnaisse l'odrdre de tri:
SELECT FROM matable WHERE Hour LIKE '%AM' ORDER BY Hour THEN SELECT FROM matable WHERE Hour LIKE '%PM' ORDER BY Hour
Mais d'un autre cote je n'ai pas pu encore esseyer ta solution du fait que je n'ai plus mon pc ce week end mais un mac(qui n'a pas les bons logiciels),donc peut etre que ta solution repond deja a ma question.
Merci pour ta reponse
0
Même si ce message est vieux, j'y répond ça pourrait aider des personnes.

Il suffit de faire ceci :

SELECT * FROM matable ORDER BY Hour GROUP BY RIGHT(Hour, 3)

La fonction RIGHT(chaine, x) sélectionne les "x" caractères en partant de la droite de la chaine "chaine"
De même pour la LEFT() mais en partant de la gauche
0
Merci
0