Textarea et retour à la ligne

[Fermé]
Signaler
-
 Igör Wagner -
Bonjour,

Voilà mon petit problème..

J'ai un formulaire avec un textarea, dans ce textarea l'utilisateur peut faire des retours à la ligne quand il veut pour structurer son texte.

Hors si je rentre ce texte dans une base de donnée mysql tel quel, si jamais je le ressort pour l'afficher les retours à la ligne auront disparus.

Je me demandai comment récupérer les retours à la ligne de l'utilisateur pour y insérer une balise <br />.

On m'a parlé de fonction nl2br et wordwrap. Mais j'ai eu beau me creuser la tête pour essayer de les comprendre, j'en suis pas loin de 0 encore ^^

Voilà, si y a quelqu'un pour m'aider, merci d'avance :)
A voir également:

5 réponses

Bonsoir
si infos est le nom du champ textarea
$infos = nl2br( $infos );
24
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42854 internautes nous ont dit merci ce mois-ci

Utilisateur anonyme
Bien merci de m'avoir expliqué que c'était aussi simple xD

Je cherchais une utilisation plus compliqué au vu des examples peu pertinent que j'avais trouvé :/

Et pour wordwrap tu as une idée de ce qu'elle fait exactement ?
Elle casse les lignes tous les X caractères si j'ai bien compris ?

Merci, ric !
> ThisGuyIsAwesome
Merci coco, ça fait plaiz' sisi ! Biz' à la mifa ;-)
Messages postés
6650
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 305
Bonjour,

CITE: "si je rentre ce texte dans une base de donnée mysql tel quel..."

Si l'utilisateur effectue des retours à la ligne, ils seront enregistrés en BDD. Ces caractères sont respectivement \n et \r (et selon le système utilisateur seulement \n).

Si vous faites simplement:

Exemple:

$str = "C'est un retour\nà la ligne";

echo $str

affichera

C'est un retour à la ligne

mais faites clic-droit et affichage source, vous retrouverez dans le code HTML ceci:

C'est un retour
à la ligne

Le \n a bien été exécuté.

En HTML, le \n ne sera pas visible dans une page web. Pour le voir, en dehors d'un textarea, il faut faire ceci:

echo str_replace("\n","<br/>", $str);

Pour récupérer $str dans un textarea:

<textarea><?php echo $str; ?></textarea>

et on retouve ceci

C'est un retour
à la ligne

Il faut éviter les manips avant stockage en BDD. Il est préférable de garder la chaîne telle qu'elle a été saisie et ne la modifier que pour un éventuel affichage.

Cdlt
Bonjour,

J'aimerai faire exactement la meme chose mais en javascript.

J'essai de decouper un champ textarea en chaines de caracteres, chaque ligne equivault à une chaine de carartere.

J'essau d'utiliser la fonction split avec une regexp mais ca n'est pas tres concluant ( \n ou $ ne match pas)

Quelqu'un a t'il une idée ? Merci d'avance.

Fla
POST INUTILE,

en fait, il fallait juste ne pas mettre de delimiteurs pour la regexp


var test_list='ma chaine de caractere qui peut avoir plusieurs ligne';
var the_test_spliter=new RegExp('\n',"g");
var the_test_array=test_list.split(the_test_spliter);
"POST INUTILE"

Parle pour toi...
Messages postés
351
Date d'inscription
vendredi 16 février 2007
Statut
Membre
Dernière intervention
5 novembre 2020
77 > Jack
Ben il disait juste qu'il avait trouvé la réponse.
Petit deterrage annuel

J'ai le même problème mais dans le sens inverse je voudrait pouvoir modifier des données préalablement rentré dans un textarea. J'utilise la fonction nl2br pour la conversion des retours chariot du textarea dans la bdd, mais maintenant je voudrait que le contenu du textarea retrouve ces retour chariot quand je charge son contenu, car ca m'affiche : "Mon contenu<br />etc<br />"
au lieu de "Mon contenu
etc"

Malheureusement il n'y a pas de br2nl!!

Si quelqu'un avait une idée.

Merci
Bonjour

J'utilise la fonction nl2br pour la conversion des retours chariot du textarea dans la bdd,
C'est là l'erreur !
il faut utiliser mysql_escape_string qui est fait pour entrer les données dans la base , et jamais les nl2br, htmlentities ou autres addslashes qu'on voit souvent.
il faut utiliser mysql_escape_string qui est fait pour entrer les données dans la base

sauf que cette fonction est périmée depuis belle lurette... elle a été remplacée par mysql_real_escape_string...

et je ne vois pas pourquoi c'est une erreur d'utiliser les addslashes(), htmlentities()... ???
peut-être que tu peux nous en dire plus ?