Posez votre question Signaler

Retour ligne, Textarea et PHP

shimizaki 5Messages postés 4 mai 2009Date d'inscription - Dernière réponse le 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.
Lire la suite 

Retour ligne, Textarea et PHP »

8 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Lorsque tu récupères les valeurs avec php transmise par ajax, les \r\n existent dans la chaine ?
shimizaki- 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.
Ajouter un commentaire
Réponse
+0
moins plus
"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?
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
shimizaki- 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é.
Ajouter un commentaire
Réponse
+0
moins plus
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
shimizaki- 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".
Ajouter un commentaire
Ce document intitulé « Retour ligne, Textarea et PHP » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?