Syntaxe dans une requête

Débutant
Invité n'ayant pas de compte PHPfrance

17 sept. 2007, 14:58

Bonjour à tous.

J'ai un souci de synthaxe dans une requete mysql.

Voici le code

Je récupère 2 variables by et sort pour l'ordre de tri.

Cela ne fonctionne pas .
$BY=$_GET['by'];
$SORT=$_GET['sort'];

$result=mysql("$DBName","SELECT * FROM Produit WHERE Reference ORDER BY $BY $SORT ");


Lorsque j'utilise

$BY='Champ';
$SORT='ASC';

Cela fonctionne...
Merci de votre aide c'est surement une bétise mais je débute en php.

Bercy

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

17 sept. 2007, 15:14

Qu'est ce qui ne fonctionne pas ? qu'est ce que ça fait ? qu'est ce que ça devrait faire ? quels sont les messages d'erreur ?

Affiche toujours les requêtes que tu génères lorsque tu as une erreur, histoire de voir ce qui ne va pas... déjà ton WHERE est assez curieux... Et quoi qu'il en soit, si tu utilises la clause ORDER BY il faut nécessairement spécifier (au moins) un nom de champ ensuite, donc ta variable $ORDER doit nécessairement être renseignée. A toi de t'assurer que tu la récupères bien à chaque fois et qu'elle n'est pas vide. Sinon utilises une valeur par défaut ou bien retire le ORDER BY dans ce cas :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

17 sept. 2007, 15:18

Exacte j'ai fais une erreur

Voici la bonne le rèquete
$result=mysql("$DBName","SELECT * FROM Produit ORDER BY ".$BY." ".$ASC." ");
Cette requète me permet de récupérer tous les produits d'una table. Ce qui ne fonctionne pas c'est le tri.

J'ai un souci de syntaxe au niveau du ORDER.

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

17 sept. 2007, 15:28

Ryle t'as donné un conseil pratiquement vital quand tu as un soucis de requête, c'est d'afficher la requête que tu vas exécuter.

Très souvent cet affichage permet de détecter l'erreur.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

17 sept. 2007, 15:32

Comment dois je l'afficher ?

echo"$result";

Merci

ViPHP
fab
ViPHP | 2657 Messages

17 sept. 2007, 15:42

transforme
$result=mysql("$DBName","SELECT * FROM Produit ORDER BY ".$BY." ".$ASC." "); 
en :
$req = 'SELECT * FROM Produit ORDER BY '.$BY.' '.$ASC;
$result = mysql($DBName,$req);
echo $req; // ici pour afficher la requete 
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Invité
Invité n'ayant pas de compte PHPfrance

17 sept. 2007, 15:51

Merci pour la méthode d'affiche.

Entre temps j'ai trouvé la bonne synthaxe

là voici pour les débutants comme moi
$result=mysql("$DBName","SELECT * FROM Produit ORDER BY '$BY' $SORT ");
$BY entre '' mais pas $SORT

N'étant pas enregistré je ne peux pas mettre le tag résolu.
Je m'inscris de suite.

Merci encore

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 sept. 2007, 16:49

Entre temps j'ai trouvé la bonne synthaxe
là voici pour les débutants comme moi
L'est mieux le code de fab pour un débutant (comme toi :wink:)
$BY entre '' mais pas $SORT

$BY correspond à un champ de la base de données ?
Si oui alors tu ne dois pas mettre d'apostrophes car tu vas passer la variable $BY en tant que chaine de caractères et non comme un champ => pas le même résultat.
N'étant pas enregistré je ne peux pas mettre le tag résolu.

Tu confirmes la résolution et on le fera pour toi :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

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

17 sept. 2007, 17:22

Je plussois la remarque de Truc, les apostrophes autour du $BY est une erreur et en aucun cas une solution. On tri selon un nom de champ ou un alias mais pas selon une chaine.

Comme je te l'ai dit plus haut, il te faut t'assurer que cette variable contient bien un nom de colonne avant de l'utiliser, ou bien retirer (voire de ne pas ajouter) la clause ORDER BY si ta variable est vide.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 36 Messages

27 sept. 2007, 19:56

J'ai retrouvé mon login password.

Ce sujet est résolu pour moi. Merci @ tous