Problème de retour chariot

philippe -  
 philippe - 16 nov. 2015 à 11:16
Bonjour,
J'ai beau chercher un peu partout je ne trouve la solution !!
Quand je saisis du texte dans un textarea j'ai bien le texte saisi dans ma bdd mais à l'affichage dans le textarea ça n'affiche pas le texte saisi avec les retours chariot.
Exemple dans la table j'ai le teste saisi :
Bonjour,
Les retours chariot me pausent problème

Dans le textarea après insertion :
Bonjour,\r\nLes retours me pausent problème

voici le code de ma page
if (isset($_POST['textemessage']))	$textemessage = $_POST['textemessage'];
else $textemessage = "";

//enregistrement du message
$objet = mysqli_real_escape_string($con,$_POST['objet']);
$nom = mysqli_real_escape_string($con,$_POST['nom']);
$prenom = mysqli_real_escape_string($con,$_POST['prenom']);
$emetteur = mysqli_real_escape_string($con,$_POST['mail']);
$textemessage = mysqli_real_escape_string($con,$_POST['textemessage']);
//preparation de la requete
$requete = "INSERT INTO messages (id_message, date, heure, nom, prenom, emetteur, objet, texte)
VALUES('','$my_date','$my_time','$nom','$prenom','$emetteur','$objet','$textemessage')";
if (mysqli_query($con, $requete)) {
    	$message1 = "Merci pour votre message, nous vous répondrons dans les meilleurs délais";
} else {
    	$message = "Message non enregistré. Merci de vérifier votre saisie";
}
mysqli_close($con);


<textarea name="textemessage" rows="15" style="width:440px; font-size:13px"><?php echo ($textemessage); ?></textarea><br>


Merci d'avance

1 réponse

NHenry Messages postés 15215 Date d'inscription   Statut Modérateur Dernière intervention   363
 
Regardes la fonction nl2br et stripslashes

J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
0
philippe
 
J'ai essayé ça :
stripslashes(nl2br(htmlentities(trim($_POST['textemessage']))))
mais ça ne pas non plus!!
0
NHenry Messages postés 15215 Date d'inscription   Statut Modérateur Dernière intervention   363
 
Et en inversant les 2 fonctions ?
nl2br(stripslashes(htmlentities(trim($_POST['textemessage']))))
0
philippe
 
J'ai essayé dans tous les sens et maintenant j'en suis là :

stripslashes(nl2br(htmlentities($textemessage)))

tout est bien échappé mais dans mon textarea le retour chariot ne se fait toujours pas !!
0
jordane45 Messages postés 38472 Date d'inscription   Statut Modérateur Dernière intervention   4 745 > philippe
 
Bonjour,
Commence donc par faire un ECHO du contenu de ta variable (directement dans ta page sans passer par un textare et regardes quelle forme il a.

Ensuite, et pour éviter tout souci, pense à récupérer le contenu de ta variable AVANT de l'utiliser via un ISSET et l'écriture ternaire;
Comme ceci :
$msg = isset($_POST['textemessage']) ?trim($_POST['textemessage']) : '';


Puis... penses que le nl2br .. tu dois l'appliquer à la variable avant les autres modifications ( htmlentities..stripslashes..etc...)

$textemessage = stripslashes(htmlentities(nl2br($msg))) ;


Et enfin :
Pourquoi le fais tu sur une variable POST ?
La transformation en <br> devant se faire à l'affichage (quand tu récupères les données de ta BDD) ... pas lors de son insertion dedans...(à moins que tu ne ré-affiches l'info après avoir fait ton submit)
0
philippe
 
Bonjour,
Après des heures de recherche voilà où j'en suis.
Pour insérer le message dans la table j'ai donc :
$textemessage = mysqli_real_escape_string($con,$_POST['textemessage']);

ensuite après l'insertion dans la table et l'affichage dans le textarea j'ai ça :
$msg = isset($_POST['textemessage']) ?trim($_POST['textemessage']) : '';
$textemessage = nl2br($msg) ;
echo $textemessage;

hors textarea (donc écrit directement sur la page) le retour chariot est ok
par contre dans le textarea le retour chariot se fait mais j'ai <br />.
mon textarea est :
<textarea name="textemessage" rows="15" style="width:440px; font-size:13px"><?php echo $textemessage; ?></textarea><br>

Je ne comprends pas pourquoi le résultat n'est pas le même dans le textarea que hors textarea !!
0