[PHP/MySQL] Problèmes de ' et "
Résolu
roukmouth
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
dede -
dede -
Bonjour,
je possède une base de données qui contient des fiches de films.
La table utilisée ici s'appelle "liens" et les titres sont contenus dans le champs "lien_titre".
Dans une première page, je ressors tous les films contenus dans ma base de données, en cliquant sur l'un d'eux, une nouvelle page s'ouvre pour nous faire découvrir sa fiche. Mais voilà, si le film possède un apostrophe ('), cela ne fonctionne pas.
Voici comment je ressors mes films dans la première page :
Jusqu'ici tout va bien...
Et voici la page avec laquelle j'éprouve des difficultés à afficher les films avec des titres contenant des apostrophes (mais aussi les signes "+" et "&" mais, cela ne me dérange pas trop) :
Voici en résumé la page affichant les fiches de film. Je me doute que mon problème se trouve dans $query, il faudrait certainement jouer avec les ' et les ", mais comment... J'ai déjà essayé de les intervertir, mais sans succès et d'écrire aussi
Aidez-moi, s'il vous plaît, je débute en PHP/MySQL. Merci d'avance.
je possède une base de données qui contient des fiches de films.
La table utilisée ici s'appelle "liens" et les titres sont contenus dans le champs "lien_titre".
Dans une première page, je ressors tous les films contenus dans ma base de données, en cliquant sur l'un d'eux, une nouvelle page s'ouvre pour nous faire découvrir sa fiche. Mais voilà, si le film possède un apostrophe ('), cela ne fonctionne pas.
Voici comment je ressors mes films dans la première page :
$query = " SELECT * FROM liens ORDER BY lien_titre"; $result = mysql_query ($query) or die ("Exécution de la requête impossible"); $nblignes = mysql_num_rows ($result); for ($i=0; $i<$nblignes; $i++) { $ligne = mysql_fetch_array ($result); extract($ligne); echo " <tr> <td width='50%'> <center> <br> <a href='fichelien_auto.php?t=$lien_titre'> <h3>$lien_titre</h3></b></a>"; ...
Jusqu'ici tout va bien...
Et voici la page avec laquelle j'éprouve des difficultés à afficher les films avec des titres contenant des apostrophes (mais aussi les signes "+" et "&" mais, cela ne me dérange pas trop) :
$query = " SELECT * FROM liens WHERE lien_titre='$t'"; $result = mysql_query ($query) or die ("Exécution de la requête impossible"); $nblignes = mysql_num_rows ($result); for ($i=0; $i<$nblignes; $i++) { $ligne = mysql_fetch_array ($result); extract($ligne); echo " <h3><b>$lien_titre</b></h3> Ajouté le $lien_date par $lien_membre<br> <b>Catégorie : </b>$lien_categorie<br>"; } include($lien_page); //lien_page contient l'adresse d'un fichier qui contient lui-même d'autres informations sur le film. }
Voici en résumé la page affichant les fiches de film. Je me doute que mon problème se trouve dans $query, il faudrait certainement jouer avec les ' et les ", mais comment... J'ai déjà essayé de les intervertir, mais sans succès et d'écrire aussi
SELECT * FROM liens WHERE lien_titre="'.$t.'"'en intervertissant également les guillemets et les appostrophes, mais cela n'a rien changé.
Aidez-moi, s'il vous plaît, je débute en PHP/MySQL. Merci d'avance.
A voir également:
- [PHP/MySQL] Problèmes de ' et "
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
13 réponses
Il y a aussi les fonctions:
htmlspecialchars ("mon texte avec des ", des ', des < ou >, et tout le tsoin tsoin")
combinée avec la fonction mysql_real_escape_string ('encore du texte")
Notez que, si votre texte est entouré de "", il faut mettre un \ devant tous les " dans votre texte (même chose pour les ' si il est entouré de ' ' ). C'est ce qu'on appelle l'échappement (un peu comme les voitures, mais ça pollue moins ^^).
Ça protège non seulement contre la plupart des sources d'erreurs (si pas toutes ^^), et aussi contre le code malicieu (quelqu'un qui essayerai d'introduire du code html dans votre site via un pseudo, une signature, ..., ou faire des requêtes mysql par ce même moyen, du hack quoi ^^).
htmlspecialchars ("mon texte avec des ", des ', des < ou >, et tout le tsoin tsoin")
combinée avec la fonction mysql_real_escape_string ('encore du texte")
Notez que, si votre texte est entouré de "", il faut mettre un \ devant tous les " dans votre texte (même chose pour les ' si il est entouré de ' ' ). C'est ce qu'on appelle l'échappement (un peu comme les voitures, mais ça pollue moins ^^).
Ça protège non seulement contre la plupart des sources d'erreurs (si pas toutes ^^), et aussi contre le code malicieu (quelqu'un qui essayerai d'introduire du code html dans votre site via un pseudo, une signature, ..., ou faire des requêtes mysql par ce même moyen, du hack quoi ^^).
ah, oui en effet, et ben pour cette exception du met des petits
addslashes :
$var = addslashes($var);
++
addslashes :
$var = addslashes($var);
++
Salut =)
ben le truc serait peut-être de remplacer les quote ( quote = ' ) par un autre truc avant d'écrire dans ta base et de faire l'inverse en la lisant.
ben le truc serait peut-être de remplacer les quote ( quote = ' ) par un autre truc avant d'écrire dans ta base et de faire l'inverse en la lisant.
tu peux le faire avec la fonction
ça ce sera avant l'écriture dans ta base et après lecture avant de l'afficher tu fais l'inverse :
bon tu mets ce que tu veux à la place de "opopop" =) c'était un exemple
++
str_replace("'","opopop",$tavariable);
ça ce sera avant l'écriture dans ta base et après lecture avant de l'afficher tu fais l'inverse :
str_replace("opopop","'",$tavariable);
bon tu mets ce que tu veux à la place de "opopop" =) c'était un exemple
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ce n'est pas du tout la peine de remplacer quoi que ce soit : tu peux mettre des ' dans tes infomrmation de la base, et pour les afficher, tu met simplement :
echo "blabla".$var."blabla<BR>";
où $var peut contenir le texte suivant :
j'ai tres fait, mais bon je viens de manger !
Ca te l'affichera correctement, le tout est de ne mettre en permanence que des " " et non ' '.
Et dans les requetes, il te faut mettre :
"SELECT ... WHERE id = '".$machin."' ..."
Toujours ' puis ". la variable et ." puis '
++
echo "blabla".$var."blabla<BR>";
où $var peut contenir le texte suivant :
j'ai tres fait, mais bon je viens de manger !
Ca te l'affichera correctement, le tout est de ne mettre en permanence que des " " et non ' '.
Et dans les requetes, il te faut mettre :
"SELECT ... WHERE id = '".$machin."' ..."
Toujours ' puis ". la variable et ." puis '
++
ben nan, chuis po d(\opopop)accord !!!
parce que dans un champ de type varchar par exemple, tu veux insérer j'ai faim, c'est po ma faute à moi, ta requête sera :
eh ben il va arrêter la valeur au 2è ' trouvé, donc marchera po !!!
parce que dans un champ de type varchar par exemple, tu veux insérer j'ai faim, c'est po ma faute à moi, ta requête sera :
INSERT INTO A_TABLE_TOUT_LE_MONDE VALUES('j'ai faim, c'est po ma faute à moi');
eh ben il va arrêter la valeur au 2è ' trouvé, donc marchera po !!!
Le pb ne vient pas du SQL mais du php,
Si on enregistre un texte dans lequel aparait des ' ,comme par exemple :
j'ai plus fain.
Il faut fare :
:)
Si on enregistre un texte dans lequel aparait des ' ,comme par exemple :
j'ai plus fain.
Il faut fare :
<?php $texte = "J'ai fain"; $texte = addslashes($texte); $query = "INSERT INTO ... VALUES ('".$texte."',......)"; ?>
:)
ben en fait.... je ne suis pas certain...
parce que dans :
parce que dans :
$query = "INSERT INTO ... VALUES ('".$texte."',......)";ce qui délimite ta chaine ce sont les double quote et non les simple. tu peux mettre autant de ' que tu veux entre " et " en php (enfin il me semble...) ce serait donc bien à SQL que cela poserait problème. enfin bon, Roukmouth, ça marche ou pas ?