Aller au contenu

Apostrophe, si tu m'étais contée


Sujets conseillés

Posté (modifié)

Bonjour,

J'ai des soucis avec les apostrophes.

J'ai un champs (MySQL) auteur dans lequel je stocke des noms d'auteurs sous la forme prénom nom;prénom2 nom2;

Cela permets de faire ce type d'affichage par exemple : http://www.amateur-histoire.fr/livre-18.htm

avec ensuite une navigation par auteur.

La recherche sur la table est sous la forme SELECT ... WHERE auteur LIKE '%$theme_add%'

Si je fais ça, je n'arrive pas à obtenir les noms avec une apostrophes : http://www.amateur-histoire.fr/theme.php?r...#092;%27Almeida

Si je recherche ainsi SELECT ... WHERE auteur='$theme_add', j'arrive bien à avoir les noms avec une apostrophe simplement s'il n'y a qu'un seul auteur. Lorsque il y a plusieurs auteurs dans le champs, je n'ai pas de résultat.

Mon problème est donc de pouvoir répondre correctement à la requête suivante : http://www.amateur-histoire.fr/theme.php?r...#092;%27Almeida

Quelqu'un a t il une idée ?

Modifié par Sanguo
Posté (modifié)

Bonjour Sanguo,

A mon avis, il s'agit d'un problème d'antislash en trop, soit dans la base mysql elle-même, soit dans la requète.

Commence par vérifier que tu n'as pas d'antislash dans la base, puis vérifie qu'il n'y en a bien qu'un dans la requète. Sachant par exemple qu'il y en a déjà un dans l'URL que tu indiques, et que PHP risque selon tes options d'en ajouter un aussi, cela va en faire 2 dans ta requète. Pour peu que tu fasses en plus un addslashes, on est à 3 !

PS : je pense avoir vu juste, cf la requète suivante : http://www.amateur-histoire.fr/theme.php?r...#092;%27Almeida : plutôt des antislash dans la base donc.

Modifié par cyberlaura
Posté

Merci beaucoup c'était ça. Je parais un peu idiot.

Mais pour chacun des enregistrements je rajoutais un addslahes car j'ai lu partout qu'il fallait le faire et pour afficher les résultats je faisais un stripslashes.

Quelle est la bonne méthode ?

Posté

Normalement tu n'as pas à faire de stripslashes pour l'affichage.

Ta base de données ne devraient pas contenir d'antislashs.

De plus il ne faut pas utiliser addSlashes lors de l'insertion dans la base de données, mais plutôt mysql_escape_string ou mysql_real_escape_string.

http://fr.php.net/manual/fr/function.mysql...cape-string.php

Tu as certainement un antislash en trop à cause des magic_quotes.

http://www.webmaster-hub.com/index.php?showtopic=45892

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...