Erreur avec ORDER BY !

Ext1cti0n-007
Invité n'ayant pas de compte PHPfrance

04 sept. 2005, 20:15

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'

Mammouth du PHP | 19672 Messages

04 sept. 2005, 20:21

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";
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Ext1cti0n-007
Invité n'ayant pas de compte PHPfrance

04 sept. 2005, 20:24

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 !

Mammouth du PHP | 19672 Messages

04 sept. 2005, 20:30

fais voir la structure de la table ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Ext1cti0n-007
Invité n'ayant pas de compte PHPfrance

04 sept. 2005, 20:42

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é.

Mammouth du PHP | 19672 Messages

04 sept. 2005, 21:03

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

05 sept. 2005, 13:43

Image

Voila ! :shock:

Ext1cti0n
Invité n'ayant pas de compte PHPfrance

05 sept. 2005, 13:55

Image

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

Bizaare que sur mon code cela ne fonctionne pas !!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 sept. 2005, 14:17

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

Mammouth du PHP | 19672 Messages

06 sept. 2005, 00:09

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

28 sept. 2005, 21:57

voici
$sql="select * from forum where id='$id_ut' order by id";

ça marche trés bien ;)

Eléphant du PHP | 199 Messages

28 sept. 2005, 22:27

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:
Les 2 font la paire : coder ET commenter :wink:

Mammouth du PHP | 983 Messages

28 sept. 2005, 22:34

Si ID_news est un entier, nul besoin d'apostrophes.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 sept. 2005, 23:20

Peux-tu montrer toutes les lignes relatives à l'exécution de cette requête ?
(J'ai une petite idée...) ;)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 sept. 2005, 23:24

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 ? :?: