Comment résoudre les problèmes de saut de ligne avec AJAX PHP et MySQL ?

Réponses rédigées par Antoine
Dernière mise à jour : 2020-10-14 00:28:15
Thèmes : webmaster - php - ajax - textarea - mysql
Question

Bonjour,

J'ai des sauts de ligne présents dans un <textarea>. Je récupère la valeur du <textarea> avec JavaScript et je la passe en AJAX à mon script PHP pour mise en base de données.

Quand je récupère la valeur depuis la base de données et que je l'affiche dans le <textarea> les sautes de ligne ont disparu.

Merci pour votre aide.

Réponse

Lorsque vous récupérez la valeur du <textarea> en JavaScript vous devez utiliser la fonction encodeURIComponent().

var textarea = encodeURIComponent(document.getElementById("textarea").value);

Ensuite vous passez cette valeur via la méthode AJAX et effectuez votre requête INSERT dans la base de données.

Lorsque vous effectuez la requête SELECT, et qu'à titre d'exemple vous récupérer la variable PHP nommée $textarea, vous devez procédez comme suit pour remplacer les balises <br /> par les sauts de lignes :

<?php
$sauts = array("<br />","<br>","<br/>"); 
$textarea = str_ireplace($sauts , "\r", $textarea);
?>

Utilisez ensuite la fonction PHP htmlspecialchars pour sécuriser l'affichage.

Réponse

Si vous voulez tout simplement afficher la variable PHP qui contient le contenu du textarea, préalablement envoyé via AJAX avec la fonction JavaScript encodeURIComponent(), vous devez utiliser la fonction PHP nl2br() :

<?php
$textarea= nl2br(htmlspecialchars($_GET["textarea"], ENT_QUOTES));
?>