Page 1 sur 1

petit souci avec chaines comportant des quotes

Posté : 06 juin 2006, 14:27
par cmils
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

Posté : 06 juin 2006, 14:31
par Sineljogy
Ben lorsque tu affiches tu fais :
echo stripslashes($nom_db);
ou bien tu le fais déjà ?

Posté : 06 juin 2006, 14:47
par cmils
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

Posté : 06 juin 2006, 14:53
par Sineljogy
On pourrait avoir les lignes de codes ?? :D

Posté : 06 juin 2006, 15:15
par cmils
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

Posté : 06 juin 2006, 15:18
par Sineljogy
echo "<input type=\"text\" name=\"".$nomChamp."\" value=\"".$valeurChamp."\">";

Posté : 06 juin 2006, 15:31
par cmils
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

Posté : 06 juin 2006, 15:48
par Sineljogy
echo "<input type=\"text\" name=\"".$nomChamp."\" value=\"".htmlspecialchars($valeurChamp)."\">";
;)

Posté : 06 juin 2006, 16:01
par cmils
Super : merci Sineljogy !

Corinne