Erreur variable dans requete [PHP] [Fermé]

Signaler
-
Messages postés
99
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
20 février 2012
-
Bonjour,

Voila je fit un site de database^^, jusqu'à présent mes recherche et tout étais basés sur un système d'ID, et je n'avais aucun problème: puis j'ai du faire une partie basé sur la recherche de mots^^, seulement voila avec des chiffres ma requête marchais mais avec des lettres... cela ne marche plus -_-.

Je vous met mon code pour que vous compreniez peut être d'où viens l'erreur.

$selection = $_GET['var'];

$recherche = mysql_query('SELECT groupe FROM matable WHERE classe='.$selection.'');
$retour = mysql_fetch_array($recherche);
																
if (empty( $retour['groupe']))
{echo'Page introuvable';
}
																
else
{$retour['groupe'];
}


Voila mon code, définir $selection en donnant la valeur d'un GET, faire une recherche dans 'matable' du 'groupe' possédant dans 'classe' l'attribut $selection. ensuite un 'if' vérifie que le retour n'est pas vide (se qui veut dire que cela n'existe pas sinon) si c'est vide on marque que la page est introuvable sinon on affiche $retour['groupe'] qui est donc le groupe ou la classe correspond à la valeur dans $selection.

Donc au début me envois de variable en GET n'étais que des chiffres, autrement dit je passais par une case 'ID' seulement là je ne peut pas je suis obligé de passer par une case contenant des lettres, quand j'utilisais les chiffres se code passais très bien, mais depuis que j'utilise des lettre rien à faire plus rien ne marche...

Voilà j'espère que j'ai été asses précis dans mon résumé^^ merci de votre aide.

11 réponses

Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 532
2 choses ne vont pas avec ta requête, la première, tes quotes, quelque chose dans ce style serait plus juste :

"SELECT groupe FROM matable WHERE classe='$selection'"

ensuite ton classe=truc veut dire que classe doit être strictement égal à trucp. Peut être que ta requête serait plus pertinente comme suit :

"SELECT groupe FROM matable WHERE classe like '%$selection%'"
Messages postés
99
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
20 février 2012
20
Bonjour Simetra,
Je pense que ta ligne requete serais plus juste comme ça :
$recherche = mysql_query("SELECT groupe FROM matable WHERE classe='".$selection."'");


Et en mettant
classe='*".$selection."*'"
ça permettra de savoir si $selection est contenu dans le champs classe
Alors^^ oui c'est normal que ma requête soit strictement = à, c'est moi qui détermine l'envoi , en faite le GET est obtenu après avoir cliqué sur un lien donc j'ai la maitrise parfaite du contenue, quoi qu'il en soit le code ne me renvoi pas une valeur vide il me renvoi une erreur, j'ai testé de faire comme drantd a dit mais cela me renvois une erreur l'erreur me dit que l'argument mit n'est pas valide pourtant comme je le dit avec des chiffres cela marche parfaitement.
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 532
vérifie bien tes quotes, à mon avis ça vient de là

fais un echo de ta requête et montre la nous pour voir
J'ai fait un echo de $selection pour voir si cela arrive bien, pas de problème le $selection contient exactement mon GET pour se qui est de l'echo du $retour['groupe'] il ne me retourne rien.
Messages postés
99
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
20 février 2012
20
Essai comme ça
$retour = mysql_fetch_array($recherche, MYSQL_ASSOC);

Avec cette option la fonction renvoi un tableau associatif.
Cela ne renvois toujours rien, je viens de faire un 'or die mysql error' qui me renvois ceci:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' matable WHERE classe="test" ' at line 1
Messages postés
99
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
20 février 2012
20
Donne nous la requete qui est executée en entière. Ce sera plus facile de t'aider
La requête entière est en haut -_- mais j'la remet si tu veut:

$selection = $_GET['var'];

$recherche = mysql_query('SELECT groupe FROM matable WHERE classe='.$selection.'');
$retour = mysql_fetch_array($recherche);
																
if (empty( $retour['groupe']))
{echo'Page introuvable';
}
																
else
{$retour['groupe'];
}


Voila y a que ça dans ma requête, je peut rien dire de plus... j'ai un GET qui arrive je travail dessus puis je renvois un valeur correspondante.
Vous allez m'dire à quoi ça sert? bien en faite par la suite plus bas dans mon code j'ai encore la même requête mais cette fois qui prend TOUT les champs et fait une mise en page d'informations complètes, cependant pour vous éviter d'avoir 15 tonne de codes je met cette requête identique mais moins longue, la différence entre les 2? l'autre au lieux de sélectionner juste 'groupe' sélectionne tout et renvois beaucoup + d'echos, seulement le problème n'est pas la mais sur <WHERE classe= '.$selection.'> donc voila je pense pas que vous aillez non plus besoin de mon code xhtml et css pour voir la mise en page^^.
Messages postés
8319
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 532
comme tu dis -_- en effet

Je te demande de faire un echo de ta requête, pas de nous faire un copier/coller du code...

echo $recherche = mysql_query('SELECT groupe FROM matable WHERE classe='.$selection.'');

et tu nous colles la requête que tu obtiens ainsi dans ton navigateur...
Messages postés
99
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
20 février 2012
20
Execute la ligne suivante :
echo "SELECT groupe FROM matable WHERE classe='$selection'";

Cop/Colle la requete dans php myadmin et regarde si il y a une erreur, l'explication sera plus claire que "mysql error"