Problème de retour chariot

Fermé
philippe - 15 nov. 2015 à 19:35
 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 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
Modifié par NHenry le 15/11/2015 à 19:39
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
J'ai essayé ça :
stripslashes(nl2br(htmlentities(trim($_POST['textemessage']))))
mais ça ne pas non plus!!
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
15 nov. 2015 à 21:42
Et en inversant les 2 fonctions ?
nl2br(stripslashes(htmlentities(trim($_POST['textemessage']))))
0
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 38154 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 652 > philippe
16 nov. 2015 à 03:13
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
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