Rechercher : dans
Par :

Retour ligne, Textarea et PHP

Dernière réponse le 4 mai 2009 à 13:15:54 shimizaki, le 4 mai 2009 à 12:29:10 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « Retour ligne, Textarea et PHP » dans :
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

gaerebut, le 4 mai 2009 à 12:39: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 Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

2

P@t@ch0n, le 4 mai 2009 à 12:45:47

Lorsque tu récupères les valeurs avec php transmise par ajax, les \r\n existent dans la chaine ?

Répondre à P@t@ch0n

4

shimizaki, le 4 mai 2009 à 12:50:56

@ P@t@chon :
Quand j'essaye de faire un echo "alert('$contenuTextarea');"; j'ai une erreur s'il y a des retours ligne.

Répondre à shimizaki

3

shimizaki, le 4 mai 2009 à 12:48:24

"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?

Répondre à shimizaki

5

P@t@ch0n, le 4 mai 2009 à 12:55:52

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 ?

Répondre à P@t@ch0n

7

shimizaki, le 4 mai 2009 à 13:03:42

"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é.

Répondre à shimizaki

6

gaerebut, le 4 mai 2009 à 12:57:11

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 Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

8

 shimizaki, le 4 mai 2009 à 13:15:54

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".

Répondre à shimizaki
Collection CommentÇaMarche.net