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

Eléphant du PHP | 153 Messages

05 janv. 2007, 13:47

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 janv. 2007, 13:54

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 :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 153 Messages

05 janv. 2007, 14:06

Oui, mon champs est de type date.

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 janv. 2007, 15:41

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 ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 153 Messages

05 janv. 2007, 19:26

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:

Eléphant du PHP | 153 Messages

05 janv. 2007, 19:53

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.

Eléphant du PHP | 153 Messages

05 janv. 2007, 20:04

C'est bon, j'ai trouvé mon bonheur :D

Merci Ryle pour ton aide :wink:
Modifié en dernier par Cobra52 le 05 janv. 2007, 23:08, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

05 janv. 2007, 20:44

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à

Eléphant du PHP | 153 Messages

05 janv. 2007, 23:09

Oups :oops: désolé ouckileou !

Merci pour le "Résolu" :wink: