Perte de mots dans $_GET[...]

Résolu
Elbomba -  
 le père -
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!
A voir également:

8 réponses

le père
 
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   Statut Membre Dernière intervention   894
 
<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
Elbomba
 
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   Statut Membre Dernière intervention   11
 
$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   Statut Membre Dernière intervention   894
 
$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 505 Date d'inscription   Statut Membre Dernière intervention   46
 
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
Elbomba
 
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
le père
 
Il reste encore un espace en trop :
.' " ')
->
.'" ')

On va finir par y arriver ;)
0