Retour ligne, Textarea et PHP

Fermé
shimizaki Messages postés 5 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 4 mai 2009 - 4 mai 2009 à 12:29
shimizaki Messages postés 5 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 4 mai 2009 - 4 mai 2009 à 13:15
Bonjour,

J'ai un petit problème avec le retour à la ligne dans une Textarea.

J'ai ma Textarea avec son contenu $value.
Le contenu par défaut sort d'une base de données MySQL.

Je veux pouvoir modifier le contenu de ma Textarea. Je rentre le nouveau contenu à la main et ensuite je veux mettre à jour la table. Pour cela, lorsque je clique sur un bouton 'Sauvegarder' j'appelle une fonction Javascript. Cette fonction récupère le contenu de ma TextArea et appelle ensuite une page PHP avec AJAX.

Dans cette page PHP, j'ai ma fonction qui enregistre les modifications au niveau de la base de données (donc avec l'UPDATE).

Le problème est que lorsque je fais des retours lignes dans ma Textarea (avec ENTREE), j'ai une erreur 'Constante Chaîne non terminée'. J'ai fait plusieurs alert() du contenu de la TextArea un peu partout afin de voir d'où venait le problème :
Dans ma fonction Javascript, les retours ligne sont bien retranscrits.
Mais en PHP ça ne fonctionne pas.

Après recherches sur la Toile, j'ai essayé la fonction nl2br() et la fonction str_replace() en remplaçant mes "\r\n", "\n" et "\r" par des "<br/>".
La fonction nl2br() ne fonctionnait pas, j'avais toujours cette même erreur. Pas d'ajout de sauts de ligne dans la base ...

La fonction str_replace() m'a un peu fait avancer : mes retours ligne sont bien remplacés par des "<br/>", l'UPDATE de la base fonctionne, mais quand je veux afficher à nouveau le contenu de ma Textarea, mes "<br/>" sont rentranscrits tels quels, pour un joli résultat de :
Ligne 1 <br/> Ligne 2 <br/> Ligne 3

Je suis bloqué à ce point-là. J'ai essayé de refaire un str_replace(), mais à l'envers afin de remettre "\r\n" à la place des '<br/>' mais ça ne fonctionne pas.

Si vous avez des idées ...

Merci,
Jimmy, jeune stagiaire de DUT Informatique.

5 réponses

gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
4 mai 2009 à 12:39
Salut,

je te propose 2 méthode (non testée):

- Lorsque tu ré-affiche le contenu, tu fais un str_replace en remplaçant les <br /> par des \n

OU

- Avant l'update tu remplaces tout les \r\n par \n et non <br />. Puis lors du ré-affichage, tu remplaces les \n par des <br />

Cependant, je pense que la première méthode aura plus de chance de marcher et que la deuxième te conduira au même endroit que ton problème !

En espérant t'avoir aidé !

A+

Gaerebut
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
4 mai 2009 à 12:45
Lorsque tu récupères les valeurs avec php transmise par ajax, les \r\n existent dans la chaine ?
0
shimizaki Messages postés 5 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 4 mai 2009
4 mai 2009 à 12:50
@ P@t@chon :
Quand j'essaye de faire un echo "alert('$contenuTextarea');"; j'ai une erreur s'il y a des retours ligne.
0
shimizaki Messages postés 5 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 4 mai 2009
4 mai 2009 à 12:48
"je te propose 2 méthode (non testée):

- Lorsque tu ré-affiche le contenu, tu fais un str_replace en remplaçant les <br /> par des \n "

-> "J'ai essayé de refaire un str_replace(), mais à l'envers afin de remettre "\r\n" à la place des '<br/>' mais ça ne fonctionne pas. "
J'ai déjà essayé cette méthode, elle ne fonctionne pas.

Concernant la deuxième, elle ne fonctionne pas, comme tu t'y attendais ...


D'autres suggestions?
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
4 mai 2009 à 12:55
Quand j'essaye de faire un echo "alert(contenuTextarea);"; j'ai une erreur s'il y a des retours ligne.

Étonnant.
Ce sont quoi les erreurs ?

On peut tester en ligne ?
0
shimizaki Messages postés 5 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 4 mai 2009
4 mai 2009 à 13:03
"Constante chaîne non terminée"

Je travaille actuellement en local pour le moment, donc tu ne pourras pas voir en ligne je suis désolé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
4 mai 2009 à 12:57
Re,

c'est bizarre que ça ne marche pas ! ^o)
T'as essayé d'enregistrer sans faire aucun traitement puis juste lors de l'affichage de faire un
stripslashes()
de ton message ?

A+

Gaerebut
0
shimizaki Messages postés 5 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 4 mai 2009
4 mai 2009 à 13:15
Aucun changement.

Tout en avalant mon sandwich, je crois avoir ciblé ce qui fait planter mon code :

Actuellement, après l'UPDATE, s'il y avait des retours lignes alors j'ai des "<br/>" dans le base.
Quand je veux rafficher mon contenu, sans rien modifier alors le contenu s'affiche avec les balises.

Mais quand avant l'affichage, j'essaye de remettre mes "\r\n" à la place des "<br/>" (avec str_replace()) alors là j'ai mon erreur "Constante chaîne non terminée".
0