petit souci avec chaines comportant des quotes

Eléphanteau du PHP | 43 Messages

06 juin 2006, 14:27

Bonjour,

Je sais qu'il existe des fonctions addslashes et stripslashes pour gérer les quotes dans les chaines saisies dans des formulaires.
Mais j'ai l'impression que mon souci est un petit peu différent :

j'ai un formulaire de saisie :
- je tape "O'Connell" dans un champ texte nommé "nom"
- dans le script de traitement du formulaire, j'écris : $nom=addslashes($_POST["nom"])
- après stockage dans la base, je vais vérifer ce qui est écrit dans la base MySQL (vérif avec PHPMyAdmin) : je ne vois pas de \', je vois "O'Connell"
- par contre, si je veux réafficher cet enregistrement dans mon formulaire de saisie pour le modifier, je ne vois plus que "O" : le quote et ce qui suit n'est plus affiché.

Pouvez-vous m'aider ?
merci d'avance

Corinne

Eléphant du PHP | 60 Messages

06 juin 2006, 14:31

Ben lorsque tu affiches tu fais :
echo stripslashes($nom_db);
ou bien tu le fais déjà ?

Eléphanteau du PHP | 43 Messages

06 juin 2006, 14:47

Re-bonjour,

je reprécise un peu mon histoire :
Mon "O'Connell" est correctement stocké dans la base de données.
Si je le réaffiche tout simplement en utilisant un echo $ligne[4], pas de problème d'affichage, j'ai bien "O'Connell" à l'écran.

Si je veux, dans mon formulaire de saisie/modification, réafficher cet enregistrement que je viens tout juste de saisir :
- si je réaffiche mon "O'connell" dans une balise <textarea>, l'affichage est correct.
- si je le mets dans une balise <input type='text'>, alors le quote et les caractères qui suivent sont tronqués.

Pouvez-vous m'expliquer ?
Merci

Corinne

Eléphant du PHP | 60 Messages

06 juin 2006, 14:53

On pourrait avoir les lignes de codes ?? :D

Eléphanteau du PHP | 43 Messages

06 juin 2006, 15:15

Je comprends mieux ce qui se passe :
En fait, pour réafficher mon enregistrement dans un formulaire de modif, j'utilise une fonction "maison" :

function afficheChampFormulaire($titre, $nomChamp) {

echo "<input type='text' name='".$nomChamp."' value='".$valeurChamp."'>";

}

appel de cette fonction : afficheChampFormulaire ("nom", $ligne[4]);

Quand je demande l'affichage du code source dans Firefox, voici ce que je vois :

<input type='text' name='nom' value='O'Connell'>

C'est donc simplement ma fonction avec cet echo qui met le bazar avec les quotes. Mais comment faire autrement ?

Corinne

Eléphant du PHP | 60 Messages

06 juin 2006, 15:18

echo "<input type=\"text\" name=\"".$nomChamp."\" value=\"".$valeurChamp."\">";

Eléphanteau du PHP | 43 Messages

06 juin 2006, 15:31

J'ai corrigé et ça marche : merci !

... mais si j'ai besoin de saisir qqch entre guillemets dans mon formulaire, et non plus seulement des quotes ? J'ai testé avec le code que tu m'as proposé, et je retrouve le même pb de chaine tronquée.

Existe t-il un moyen de gérer à la fois le cas des quotes et celui des guillemets ?
Est-ce que je devrais éviter de mettre du code HTML dans des echo ?

merci pour ton aide,

Corinne

Eléphant du PHP | 60 Messages

06 juin 2006, 15:48

echo "<input type=\"text\" name=\"".$nomChamp."\" value=\"".htmlspecialchars($valeurChamp)."\">";
;)

Eléphanteau du PHP | 43 Messages

06 juin 2006, 16:01

Super : merci Sineljogy !

Corinne