Problème retour à la ligne dans PHP

Fermé
Ejovad Messages postés 2 Date d'inscription samedi 10 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011 - Modifié par Ejovad le 10/09/2011 à 16:23
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 12 sept. 2011 à 15:29
Bonjour,

Je vous écrit mon code:


Dans "comment.php":

<pre>  

<textarea class="form" id="comment" name="comment" cols="100" rows="10" onFocus="limitChar(this,'500');" onKeyUp="limitChar(this,'500');" onKeyDown="limitChar(this,'500');"></textarea>  

</pre>  

<input class="button" name="submitbtn" type="button" value="Commenter" onClick="addComment();"/>  

J'utilise le script Ajax pour envoyer les données.

Dans "ajax.js":

function ajax_load(to_url, pos_aff, boolean) { 

 var xhr_object = null;  
 var response = document.getElementById(pos_aff);  

 if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();  
 else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");  

 xhr_object.open("GET", to_url, true);  

  xhr_object.onreadystatechange = function(){  

   if ( xhr_object.readyState == 4 && xhr_object.status == 200){  

    if (boolean == true) {  

     response.innerHTML = xhr_object.responseText;  

    } else {  

     response.innerHTML = "";  

    }  

   } else {  

    response.innerHTML = "<img src='images/loading.gif'/>Patientez...";  

   }  
  }  

 xhr_object.send(null);  
     
}  

function addComment() {  

 var comment= document.getElementById("comment").value;  

 if (comment == "") {  
      
  document.getElementById("error").innerHTML = "Erreur: champ vide.";  
  return false;  

 } else {  

   ajax_load('add_comment.php?comment='+comment+'', 'div_show_comment', true);  
   return true;  

 }  

}  

Dans le coté serveur, je reçois les données:

Dans "add_comment.php":

if (isset ($_GET['comment'])){  
 $mysql = array();  
 $mysql['comment'] = str_replace ("<br />", PHP_EOL, htmlentities($_GET['comment'], ENT_QUOTES));  

function connect_db(){  
 mysql_connect("localhost", "root", "");  
 mysql_select_db("mabase_db");  
}  
function sql($query){  
 connect_db();  
 return mysql_query($query);  
 mysql_close();  
}  

$addComment = sql(" INSERT INTO comment VALUES (' ', '{$mysql['comment']}') ");  

En testant mon textarea, voici ce que j'obtiens:

Lorsque j'écris dans le champ:

aaa
bbb
ccc

L'insertion dans la base de donnée est comme ceci:

aaabbbccc

J'ai utilisé de différents tests avec <br />, \r\n, \n mais ça marche non plus!

Il est probable que mon code est correct car lorsque j'utilise un "point", au lieu de "\n, <br />, etc..." ----> ça marche. Dans la base de donnée je vois bien l'ajout de <br />. Bien-sûr dans l'affichage j'utilise "nl2br" pour que je vois le résultat.


Voici le code que j'ai utilisé pour tester par un "point":

$mysql['comment'] = str_replace (".", PHP_EOL, htmlentities($_GET['comment'], ENT_QUOTES));  

3 réponses

Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
10 sept. 2011 à 15:51
bonjour,
je ferais un test comme ceci:

Dans le coté serveur, je reçois les données:

Dans "add_comment.php":

if (isset ($_GET['comment'])){ 
 $data_mysql = mysql_real_escape_string($_GET['comment']);
function connect_db(){ 
 mysql_connect("localhost", "root", ""); 
 mysql_select_db("mabase_db"); 
} 
function sql($query){ 
 connect_db(); 
 return mysql_query($query); 
 mysql_close(); 
} 

$addComment = sql(" INSERT INTO comment VALUES (' ', '$data_mysql') "); 



refais un essai pour l'affichage des données

<?php 
		$texte = htmlentities($ta_variable_avec_le_text,  ENT_QUOTES, 'UTF-8') ;
		echo nl2br($text) ;
		?>


Bonne jounée
0
Ejovad Messages postés 2 Date d'inscription samedi 10 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011
10 sept. 2011 à 16:05
Merci mais ça marche non plus!
0
Nyctaclope Messages postés 5315 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 11 décembre 2022 1 253
Modifié par Nyctaclope le 10/09/2011 à 19:15
Bonjour

Je ne connais pas Ajax, mais ici ( en gras ) :

else {

ajax_load('add_comment.php?comment='+comment+'', 'div_show_comment', true);
return true;

}

cela ressemble bien à une concaténation des valeurs successives de comment ?
Et c'est bien de cela que tu te plains ?

Si ce que je dis est idiot, ne m'en tiens pas rigueur ...

A+
Nyctaclope

EDIT
effectivement, c'était idiot, je viens de voir ton "str_replace"

Et pas moyen de supprimer mon post ...


Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
trois nombres "sacrés" d'horizons différents qui se donnent la main ...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 sept. 2011 à 15:29
et si tu fais:

if (isset ($_GET['comment'])){  
 $mysql = array();  
 $mysql['comment'] = mysql_real_escape_string(nl2br($_GET['comment']));
 
 ......
0