Page 1 sur 1
ORDER BY (problème)
Posté : 07 avr. 2007, 16:07
par Invité
Bonjour,
j'ai un petit problème concernant un ORDER BY DESC, les dates ne sont pas mises dans le bonne ordre
Par exemple :
29-03-07 a 08:53
29-03-07 a 07:08
27-03-07 a 23:10
06-04-07 a 22:12
05-03-07 a 14:00
05-03-07 a 14:00
05-03-07 a 14:00
Là,le 06 avril ce place après le 5 mars mais avant le 29 mars ?????.
Apparemment,il suit l'ordre des chiffres du jour et non de la date complete...?
Pourtant,ma requete est :
$mpo = mysql_query("SELECT dc FROM cadeauc ORDER BY dc DESC LIMIT 0,10") or die ('Erreur : '.mysql_error());
.
Donc,le 06 avril devrait être en première position pourtant ?
Merci de vos réponses et surtout de votre aide

Posté : 07 avr. 2007, 16:09
par Cyrano
Ton champ est-il bien de type DATE ou DATETIME ?
Posté : 07 avr. 2007, 16:14
par aelurus
Je dirais que tu deverais séparer la date et l'heure dans ta table, la date n'a rien avoir avec l'heure, je veux dire que ce sont deux info indépendante l'une de l'autre.
Posté : 07 avr. 2007, 16:41
par Invité
Mon champ n'etait pas en datetime
Et de plus,maintenant,pour mettre la date à l'endroit,j'ai une erreur car je met les résultats dans un tableau :
echo'<tr><td>date('d-m-Y H:i:s', strtotime($donnees['dc']))</td><td>'.$donnees['pseudo'].'</td><td>'.$donnees['cadeau'].'</td></tr>';
Merci de votre aide
ps: l'erreur se situe a cause de ca :
date('d-m-Y H:i:s', strtotime($donnees['dc']))
Posté : 07 avr. 2007, 18:44
par ouckileou
Je dirais que tu deverais séparer la date et l'heure dans ta table, la date n'a rien avoir avec l'heure, je veux dire que ce sont deux info indépendante l'une de l'autre.
Je ne suis pas d'accord, une heure est liée à une date.
Il y a encore un post tout récent qui montre que c'est plus pratique de regrouper les deux : si tu veux sélectionner les lignes qui correspondent à la dernière demie-heure, tu as un super fonction qui fait ça : SUBTIME()
Ah oui mais si tu as séparé date et heure, ça devient compliqué si SUBTIME() renvoie sur le jour précédent
j'ai une erreur
[...]
ps: l'erreur se situe a cause de ca :
date('d-m-Y H:i:s', strtotime($donnees['dc']))
Merci pour l'indice, mais c'est quoi l'erreur exactement ?
Est-ce que tu as passé ta colonne en DATETIME ? C'est la première chose à faire, pour avoir des possibilités de tri/calcul simples. Toute parade ne sera que du bricolage contreperformant qui te posera forcément d'autres problèmes un jour.
Posté : 07 avr. 2007, 19:28
par Invité
Re,
mon erreur :
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/.filer2/www/classement.php on line 143
Et à la ligne 143 :
echo'<tr><td>date('d-m-Y H:i:s', strtotime($donnees['dc']))</td><td>'.$donnees['pseudo'].'</td><td>'.$donnees['cadeau'].'</td></tr>';
merci
Posté : 07 avr. 2007, 19:54
par ouckileou
C'est jamais très bon d'imbriquer plusieurs fonctions, dans un affichage. Fais tes appels en plusieurs étapes, en stockant avec des variables, et ce sera plus facile pour débugger. Parceque là c'est une bête erreur de syntaxe qui doit se trouver facilement.
Posté : 08 avr. 2007, 09:20
par Cyrano
echo'<tr><td>date('d-m-Y H:i:s', strtotime($donnees['dc']))</td><td>'.$donnees['pseudo'].'</td><td>'.$donnees['cadeau'].'</td></tr>';
Tu as un conflit d'apostrophes : celles encadrant les chaines de caractères et celles encadrant les index de tableau : alterne apostrophes et guillemets selon le cas, et mets ça en forme de façon plus lisible, ce sera plus facile à suivre, par exemple :
echo " <tr>\n";
echo " <td>". date('d-m-Y H:i:s', strtotime($donnees['dc'])) ."</td>\n";
echo " <td>". $donnees['pseudo'] ."</td>\n";
echo " <td>". $donnees['cadeau'] ."</td>\n";
echo " </tr>\n";
Posté : 08 avr. 2007, 09:29
par Expreg
Mon champ n'etait pas en datetime
Mes petits camarades t'on dit de mettre ton champ en DATETIME.
Maintenant, avant de poursuivre, tu vas nous montrer comment, et surtout sous quelle forme, tu entrais tes données date dans ta table.
Parce que mettre un DATETIME sur des données au format varchar, ça va pas le faire du tout.

Posté : 08 avr. 2007, 11:49
par Invité
Merci des ces précisions ouckileou. Je ne connaissais pas cette subtilitée.
Je dirais par contre qu'elle est lier a l'utilisation de SUBTIME(), ou dans l'optique de récuperer simplement une heures recente dans le bon jour ^^.
Mais il n'y a , je pense aucune raison que ce format de date+heure ne soit pas compatible avec un ORDERBY.
Pour le reste Expreg résume bien la situation.