Perte de mots dans $_GET[...]

Résolu/Fermé
Elbomba - 15 juin 2009 à 22:47
 le père - 16 juin 2009 à 14:03
Bonjour,

Je vais essayé d'être clair!

voila : j'ai donc une variable qui fait toujours plusieurs mots qui est transmise via un lien d'une page à une autre.

Cependant, quand j'arrive à l'autre page, la variable n'est pas reconnue par mysql puisqu'un mot à disparu


exemple :

 <a href="fiche.php?denomination= <?php echo $donnees['denomination'] ; ?> "> <?php echo $donnees['denomination']; ?> </a> 



immaginons que la 'denomination' corresponde à "comment ca marche"

je suis dirigé vers la page du lien dont le code est :

$list = mysql_query('SELECT * FROM clubs WHERE Denomination=' .$_GET['denomination']) or die(mysql_error()); 


message d'erreur:

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 'ca marche' at line 1


Je n'arrive pas a résoudre le probleme du premier mot qui a disparu et qui fait foiré toute ma page!


Merci!

8 réponses

Bonjour

Ce n'est pas dans le GET que tu perds des mots, la preuve, ils sont dans le message d'erreur, c'est qu'ils ont bien été transmis.
Le problème, c'est ta requête : la valeur dans la clause Where doit être entourée de guillemets (simples ou doubles). De plus, pour le cas où cette valeur contient des caractères spéciaux, il faut l'échapper avec mysql_real_escape_string , ça t'évitera quelques mauvaises surprises :
$list = mysql_query('SELECT * FROM clubs WHERE Denomination="' .mysql_real_escape_string($_GET['denomination'])."'") or die(mysql_error()); 
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
15 juin 2009 à 23:02
<a href="fiche.php?denomination= <?php echo url_encode($donnees['denomination']) ; ?> "> <?php echo $donnees['denomination']; ?> </a>


et attention avant de passer ça dans mysql il vaut mieux se protéger d'attaques:

$denomination=mysql_escape_string($_GET['denomination']);

$list = mysql_query("SELECT * FROM clubs WHERE Denomination='" .$denomination."' ") or die(mysql_error());
0
Salut!

Tout d'abord merci pour votre aide rapide!

Cependant, ça ne fonctionne toujours pas
lorque j'utilise le code de le pere, j'ai tout les mots mais je pense qu'il y a une apostrophe ou un guillemet en trop :

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 '" comment ca marche'' at line 1

je ne parvient donc pas obtenir la donnée dans ma base de donnée.


Merci pour le conseil Alain_42, je m'attellerais à ça plus tard!
0
babou054 Messages postés 162 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 1 septembre 2009 11
16 juin 2009 à 11:56
$list = mysql_query('SELECT * FROM clubs WHERE Denomination=' .$_GET[ 'denomination']) or die(mysql_error());
en gras t'a mis un espace avant la premiere cote ce qui est sans doute source d'erreure
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 juin 2009 à 12:02
$list = mysql_query('SELECT * FROM clubs WHERE Denomination="' .mysql_real_escape_string($_GET['denomination']).'"") or die(mysql_error()); 


petite erreur de guillemets après $_GET['denomination']
0
Ozimandias Messages postés 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
16 juin 2009 à 12:17
Souvent quand on passe des variables en Get, Les espaces sont remplacés par des %20 ou un truc comme ça. En SQL le signe % à une signification bien particulière. Je pense que ton erreur vient de là.

Essaye en envoyant une variable sans espace, je pense que ça marchera et ça confirmera ma supposition.
0
Merci!

Il y avait bien une erreur de guillemet :

$list = mysql_query('SELECT * FROM clubs WHERE Denomination=" ' .mysql_real_escape_string($_GET['denomination']).' " ') or die(mysql_error());  



Il y avait aussi un espace en trop dans le lien d'origine

<a href="fiche.php?denomination= <?php echo $donnees['denomination'] ; ?> "> <?php echo $donnees['denomination']; ?> </a>

si ça peut aider qqun...


Merci encore bonne journée!!
0
Il reste encore un espace en trop :
.' " ')
->
.'" ')

On va finir par y arriver ;)
0