Page 1 sur 1

Problème de résutats d'une requête mal ordonnés par date

Posté : 05 janv. 2007, 13:47
par Cobra52
Bonjour à tous et bonne année 2007 :D

Voila mon soucis.
J'affiche les résultats d'une requête qui sont ordonnés par "ORDER BY date DESC"
Le format de la date dans la bdd est sous la forme "Y-m-d" donc "2007-01-05" pour aujourd'hui par exemple.

Sauf que, lors de l'affichage des données, je me retrouve avec :

2006-12-30 <--- pas bon devrait être sous 2007
2006-12-31 <--- pas bon idem
2007-01-05 <--- à partir de là c'est ok en descendant
2007-01-04
2007-01-03
2007-01-02
2007-01-01

Le problème vient-il du format de la date stockée ?

Merci par avance pour votre aide.
Olivier

Posté : 05 janv. 2007, 13:54
par Ryle
Ton champ est-il de type date ou varchar ? (si ce n'est pas déjà le cas, le premier serait le mieux, d'autant que tu as déjà le bon format :))

(pis tant qu'on y est, même s'il est très tentant et que MySQL le tolère, "date" n'est pas un nom de colonne très judicieux puisqu'il s'agit d'un mot clé sql :))

Posté : 05 janv. 2007, 14:06
par Cobra52
Oui, mon champs est de type date.

Et non, mon nom de colonne est *****_date :wink:

Posté : 05 janv. 2007, 15:41
par Ryle
Ah ben ca devrait pas faire ça alors (comment ça "te voilà vachement plus avancé" ?! :))

tu as essayé de jouer la requête dans mysql ou phpmyadmin ?
t'as pas autre chose dans ton order by qui pourrait changer l'ordre de tri ?

Posté : 05 janv. 2007, 19:26
par Cobra52
Ah ben ca devrait pas faire ça alors (comment ça "te voilà vachement plus avancé" ?! :))

tu as essayé de jouer la requête dans mysql ou phpmyadmin ?
t'as pas autre chose dans ton order by qui pourrait changer l'ordre de tri ?
Ben me v'là vachement plus avancé maintenant !
:D :P

Non, effectivement, je ne l'ai pas testée dans mysql, c'est vrai que je n'ai jamais ce réflexe :oops:
Je vais le faire de ce pas :wink:

Posté : 05 janv. 2007, 19:53
par Cobra52
Voila, j'ai trouvé d'où venait le problème, je m'explique :

Ma requête :
$sql = "SELECT tprix.*,DATE_FORMAT(prix_date, '%d-%m-%Y') as prix_date FROM tprix WHERE prix_produit != '0.00' AND prix_valid = '1' ORDER BY prix_date DESC LIMIT ". $debut .", ". $nb_recherche ." ";
Et le problème vient de là :
DATE_FORMAT(prix_date, '%d-%m-%Y') as prix_date

Lorsque je retire ça, tout s'affiche dans le bon ordre par date DESC
Par contre, sous la forme Ymd.
Il existe une fonction pour mettre la date au format dmY ?
Du type $dmY_date = fonction($row['Ymd_date']);

Merci.

Posté : 05 janv. 2007, 20:04
par Cobra52
C'est bon, j'ai trouvé mon bonheur :D

Merci Ryle pour ton aide :wink:

Posté : 05 janv. 2007, 20:44
par ouckileou
C'est bon, j'ai trouvé mon bonheur :D
Un autre réflexe à prendre : dire quel est ce bonheur, pour les prochains qui passeront par là

Posté : 05 janv. 2007, 23:09
par Cobra52
Oups :oops: désolé ouckileou !

Merci pour le "Résolu" :wink: