Page 1 sur 1

Erreur avec ORDER BY !

Posté : 04 sept. 2005, 20:15
par Ext1cti0n-007
Je viens, à l'instant, de faire un script pour des commentaires de news.

Je suis content, ça marche, après quelques erreurs résolvés.

Puis, je remarque que les commentaires sont classés par ID dans le sens croissant, donc les derniers commentaires sont tout en bas.

Je décide donc de placer "ORDER BY ID DESC" dans ma requete MySQL !

Mais, je ne sais pas pourquoi, une erreure SQL s'est glissée.

Voici ce que m'affiche PHP :

"mysql_fetch_array(): supplied argument is not a valid MySQL result resource"

Puis, j'ajoute "or die(mysql_error())" pour essayer de voir l'erreur.

Voici la réponse de PHP : "Erreur de syntaxe près de 'BY ID DESC' à la ligne 1"

J'essaye plusieurs chose :

- ordoné par timestamp, meme résultat.
- enlever les majuscules, aucun changement.
- changer l'ordre de ORDER BY avec WHERE

Je ne sais plus quoi faire pour que cela marche, et je ne comprends encore moins pourquoi rajouter ORDER BY créer une erreure SQL.

Voici ma requete :

'SELECT * FROM commentaire WHERE ID_news=' . $id_news . ' ORDER BY ID DESC'

Posté : 04 sept. 2005, 20:21
par Cyrano
Et si tu mettais le bon nom de champ ?

Code : Tout sélectionner

"SELECT * FROM commentaire WHERE ID_news=". $id_news ." ORDER BY ID_news DESC";

Posté : 04 sept. 2005, 20:24
par Ext1cti0n-007
NON !

id_news, c'est pour qu'il n'y ait pas tous les commentaires de toutes les news qui s'affichent à chaque fois !

ID est le vrai nom de champ !

Posté : 04 sept. 2005, 20:30
par Cyrano
fais voir la structure de la table ?

Posté : 04 sept. 2005, 20:42
par Ext1cti0n-007
Heu, y'a 5 champs :

"ID" des commentaires

"ID_news" pour ne pas afficher tous les commentaires de ttes les news à la fois

"pseudo" Pour savoir qui parle

"contenu" Pour savoir ce que le monsieur veut dire

"timestamp" Pour connaitre la date l'heure... à laquelle la personne a posté.

Posté : 04 sept. 2005, 21:03
par Cyrano
Alors la requête suivante doit obligatoirement fonctionner:
$slq = "SELECT * FROM commentaire WHERE ID_news=". $id_news ." ORDER BY ID DESC";
Si tu exécutes ça directement dans phpMyAdmin, quel retour as-tu ?

Posté : 05 sept. 2005, 13:43
par Invité
Image

Voila ! :shock:

Posté : 05 sept. 2005, 13:55
par Ext1cti0n
Image

Voila, en enlevant les guillemets... Ca marche !

Bizaare que sur mon code cela ne fonctionne pas !!

Posté : 05 sept. 2005, 14:17
par Truc
Voila, en enlevant les guillemets... Ca marche !
tu parles de quels guillemets ?!

sur l'autre image tu teste ds phpmyadmin:
$slq = "SELECT * FROM commentaire WHERE ID_news=". $id_news ." ORDER BY ID DESC";
alors qu'il ne faudrai mettre:
SELECT * FROM commentaire WHERE ID_news=1 ORDER BY ID DESC
où 1 est arbitraire (prend une id_news de ta base

Posté : 06 sept. 2005, 00:09
par Cyrano
Non mais je rêve là : tu essayes d'envoyer du PHP dans le formulaire SQL de phpMyAdmin, c'est normal que ça plante : on envoie du SQL pur dans ce formulaire. donc convertis pour phpMyAdmin mais garde la syntaxe indiquée pour PHP.

Posté : 28 sept. 2005, 21:57
par Invité
voici
$sql="select * from forum where id='$id_ut' order by id";

ça marche trés bien ;)

Posté : 28 sept. 2005, 22:27
par smarties

Code : Tout sélectionner

$slq = "SELECT * FROM commentaire WHERE ID_news='". $id_news ."' ORDER BY ID DESC";
La valeur $id_news doit être entre apostrophe :wink:

Posté : 28 sept. 2005, 22:34
par rami
Si ID_news est un entier, nul besoin d'apostrophes.

Posté : 28 sept. 2005, 23:20
par albat
Peux-tu montrer toutes les lignes relatives à l'exécution de cette requête ?
(J'ai une petite idée...) ;)

Posté : 28 sept. 2005, 23:24
par albat
Comme il est tard, que j'ai les paupières qui tombent et que demain, je ne serai pas là,
je vous fais part de mes soupçons...

Parfois la variable qui contient ta requête s'appelle $sql, parfois c'est $slq...
Serait-ce l'explication ? :?: