Php saut de ligne dans les textarea
J'ai crée des formulaire avec des champ textarea dedans mais je voudrais savoir comment le saut de ligne peux se faire.
car lorsque je tape mon texte j'envoie les saut de ligne de se font pas.
Configuration: Windows XP Internet Explorer 7.0
25 réponses
La discussion porte sur la gestion des sauts de ligne dans les textarea et sur l’usage de nl2br en PHP pour afficher ou enregistrer le texte saisi. Des conseils préconisent de ne pas stocker des balises
en base, mais de conserver les retours chariot sous forme de "\n" et d’appliquer nl2br uniquement à l’affichage. En cas d’affichage, nl2br convertit les retours en balises
, ce qui peut être utile pour préserver le formatage dans les pages HTML et éviter d’insérer manuellement des sauts de ligne dans le code. D'autres échanges soulignent aussi que certains environnements affichent différemment les retours chariot et que les traitements peuvent varier selon le mode d'affichage ou le système d'exploitation.
-
<form action="#" method="POST"> <textarea name="texte" cols"20" rows="20"></textarea> </form> <?php if(isset($_POST['texte'])){ $texte = nl2br($_POST['texte']); // met des <br /> a chaque retour chariot echo $texte; //affiche le texte } else{ } ?>
JuZa.e3b.org || No man's land, People are strange, & Jesus was a punk ## The Blood's Flowers
#Engraved February# Sleepwalking Past Hope -
Je ne sais pas si ça répond à la question d'origine, car il semble régner une certaine confusion dans les réponses.
Pour afficher un texte avec les sauts de ligne saisi dans un textarea, j'utilise le code suivant, (où "$texte" est le texte résultant de la requête) :
$result=preg_replace("/\r\n/","\n", $texte);
$result=preg_replace("/\r/","\n", $result);
echo preg_replace("/\n/","<br />", $result);
J'espère que ça répond bien.
@+G -
ContributeurPas besoin de s'embeter avec ça ...
Regarde dans ta base si tu as bien les \n au niveau de tes retour à la ligne.
Parce que moi je n'ai pas de nl2br et les retours à la lignes s'affichent dans mes textarea.
C'est où qu'ils ne s'affichent pas tes retours à la ligne, dans ton tableau ou dans tes textearea?
Si c'est dans ton tableau c'est normal, à cet endroit là (et seulement là ;) ) tu vas mettre un ln2br pour afficher dans ta case du tableau -
et remet les nl2br()
-
j'ai posté la fonction au tout début :
avant l'affichage dans la textaera tu enlève les <br/> :
<?php $texte = str_ireplace ( "<br />", "", $texte); ?> <textarea name="descript" cols=50 rows=10><?php echo $descript; ?></textarea>
ou
<?php $texte = str_ireplace ( "<br />", "\n", $texte); ?> <textarea name="descript" cols=50 rows=10><?php echo $descript; ?></textarea>
ou encore
<?php $texte = str_ireplace ( "<br />", "\r\n", $texte); ?> <textarea name="descript" cols=50 rows=10><?php echo $descript; ?></textarea>
(parfois sa marche sans, parfois avec les \n, parfois faut rajouter \r ... a toi de voir ça ^^) -
ContributeurDans ma version je n'ai pas de problème de <br> ...
J'ai
$SujetTicket = $_POST['SujetTicket'];
dans MiseAJourTicket.php et dans messsage.php
Regarde dans ces deux pages si tu n'as pas un nl2br() ... -
ContributeurBen essaie d'afficher le echo $SujetTicket avant de l'insérer et si tu vois les sauts de ligne c'est que ce sont des <br />, sinon tu verras des \n.
Si tu vois les sauts de ligne c'est que tu as une nl2br qui transforme ton texte ... -
ContributeurOui mais ça veut dire que quelque part tu as une fonction nl2br() qui transforme tes \n en <br />
Dans ta base, tu as des \n ou des <br /> ?? -
ContributeurBen là je fais une doc de mon appli pour mon maitre de stage donc j'avance pas trop ma note de synthèse.
J'ai fait 10pages sur ma note synthèse mais je sais pas si je vais réussir à en faire beaucoup plus ... :s
Je l'ai commencée il y a 2semaines à peu près ^^
Pour ton saut de ligne regarde où dans ton script ça met des <br /> dans ta base ...
Tu enlèves le nl2br à cet endroit.
Le nl2br sert juste à afficher dans ton code HTML.-
Le saut de ligne se fait lotre de création d'un nouveau ticket , lorsque je vais dans "les tickets" dans le champ sujet ticket les <br /> ne sont pas mais c'est lorsque je fait modifier ( donc ca m'envoie a modification)
sa me met dans le formulaire dans le champ sujet ticket les <br /> la ou j'ai sauté des ligne dans le texte
-
-
ContributeurEssaie de changer le ==10 par un >= 10
-
ContributeurNon non ça tu le laisses comme c'est!
Enfin tu peux enlever ça :$SujetTicketAffich = nl2br($_POST['SujetTicket']); echo $SujetTicketAffich;
si tu as pas besoin de l'afficher et juste de l'enregistrer. -
ContributeurNon, tu le met que là où tu affiches ton $donnees['SujetTicket'] dans ta page HTML(genre dans un tableau ou autre)
Si tu le réaffiches dans ta textarea, tu ne met pas de nl2br().-
Oui ou je met mon $donnee[sujetTicke] c'est a dire la page modification.php je met ce code :
<?php if(isset($_POST['SujetTicket'])){ $SujetTicketAffich = nl2br($_POST['SujetTicket']); echo $SujetTicketAffich; $SujetTicket = $_POST['SujetTicket']; } else { } ?>
et dans la page message.php je supprime ce code ? c'est ca ? lol
désolé je fait un autre trucs a coté qui est galere....
-
-
ContributeurJe ne sais même pas ce qu'un un shéma des flux alors pour le logiciel ... ^^
Ben en fait quand tu enregistres dans ta base de données, il ne faut pas utiliser la fonction nl2br().
Il ne faut utiliser cette fonction que quand tu affiches les informations dans ta page HTML.
Dans ta base de données, il ne te faut aucun <br />, il faut que tu laisses les \n
Quand tu afficheras (par exemple dans les cases de ton tableau ...), là tu utiliseras le nl2br().
Mais pas avant ^^-
Donc dans cette page qui suit je supprime le nlbr
<?php $date = dateMySQL($_POST['DateTicket']); $heure = $_POST['HeureTicket']; ?> <?php if(isset($_POST['SujetTicket'])){ $SujetTicketAffich = nl2br($_POST['SujetTicket']); echo $SujetTicketAffich; $SujetTicket = $_POST['SujetTicket']; } else { } ?> <?php $NomClient = $_POST['NomClient']; $RecepteurTicket = $_POST['RecepteurTicket']; $InterlocuteurClient = $_POST['InterlocuteurClient']; $AffectationTicket = $_POST['AffectationTicket']; $sql = "INSERT INTO `hotlinecc`.`tb_ticket` (`IndexTicket`,`NomClient`, `DateTicket`, `HeureTicket`, `RecepteurTicket`, `InterlocuteurClient`, `SujetTicket`, `AffectationTicket`, `ObjetTicket`) VALUES('A','$NomClient','$date','$heure','$RecepteurTicket','$InterlocuteurClient','$SujetTicket','$AffectationTicket','NA')"; $res = mysql_query($sql);
ET je le met ou alors ? dans mon formulaire ?
-
-
ContributeurBen c'est parce que, comme je t'ai dit, dans ta base, il faut que tu enregistres sans la modifier et sans mettre les <br />!
Sinon il faudrait que tu remplaces les <br /> par des \n dans ton textarea.
Pour cela, regarde la doc du coté de la fonction str_replace -
heu... j'avoue que la je sèche... essaye de faire en sorte d'afficher un message pour dire que c'est vide du genre "aucun enregistrements ici" ou quelque chose comme sa, comme ça tu n'aura jamais de cases vide et toujours des bords ^^
autrement en laissant les cases vides... je vois pas comment faire-
-
Contributeur@s_sniperDans la textarea ou sur ta page HTML?
-
@Passarinho44nan sur ma page lorsque je clique sur modifier sa me rapporte le texte mais avec les br c'est mochee je trouve !!
-
-
jsui toujours la ouai ^^
-
Enfette tu vois dans mon formulaire lorsque je rempli pas des chose car il peux y avoir des valeur null ki seron modifiable ensuite via une autre formulaire de modification.
Donc j'ai une otre page qui m'affiche sous forme de tableau la requete sql de tous mes enregistrement
et les case dont c'est pas remplis il y a pas le border tu vois ce que je veux dire comment je pourrai faire pour k il m'affiche le contour de la cellule mm si el est vide car le contour apparait seulement quant la cellule est remplis.
Lol c'est un petit details mais sa me tracasse visuelement..
merci
-
-
j'ai cru que j'y arriverai jamais :p ^^
-
bah a ce moment la (en gardant le code) :
<?php require_once('connexion.php'); ?> <?php function dateMySQL($date) { // On découpe la date selon les "/" $dates = explode("/", $date); // On replace les jours, mois et années dans le bon ordre en ajoutant des "-" entre chaque $dateMySQL = $dates[2] . "-" . $dates[1] . "-" . $dates[0]; return $dateMySQL; } ?> <?php if ( (isset($_POST['DateTicket']) )&&( isset($_POST['HeureTicket']) )&&( isset($_POST['NomClient']) )&&( isset($_POST['RecepteurTicket']) )&&( isset($_POST['InterlocuteurClient']) )&&( isset($_POST['SujetTicket']) )&&( isset($_POST['AffectationTicket']) ) ){ $date = dateMySQL($_POST['DateTicket']); $heure = $_POST['HeureTicket']; ?> <?php $NomClient = $_POST['NomClient']; $RecepteurTicket = $_POST['RecepteurTicket']; $InterlocuteurClient = $_POST['InterlocuteurClient']; $SujetTicket = nl2br($_POST['SujetTicket']); //pour les saut de lignes $AffectationTicket = $_POST['AffectationTicket']; $sql = "INSERT INTO `hotlinecc`.`tb_ticket` (`IndexTicket`,`NomClient`, `DateTicket`, `HeureTicket`, `RecepteurTicket`, `InterlocuteurClient`, `SujetTicket`, `AffectationTicket`, `StatutTicket`) VALUES('A','$NomClient','$date','$heure','$RecepteurTicket','$InterlocuteurClient','$SujetTicket','$AffectationTicket','En cours')"; $res = mysql_query($sql); print '<script language="javascript"> alert("Votre ticket à bien été pris en compte dans la base de donnée"); location.href = "Principal.php?page=4"; </script>'; } else { echo "Erreur !!"; } ?> -
pourquoi ne pas faire
<?php require_once('connexion.php'); ?> <?php function dateMySQL($date) { // On découpe la date selon les "/" $dates = explode("/", $date); // On replace les jours, mois et années dans le bon ordre en ajoutant des "-" entre chaque $dateMySQL = $dates[2] . "-" . $dates[1] . "-" . $dates[0]; return $dateMySQL; } ?> <?php if ( (isset($_POST['DateTicket']) )&&( isset($_POST['HeureTicket']) )&&( isset($_POST['NomClient']) )&&( isset($_POST['RecepteurTicket']) )&&( isset($_POST['InterlocuteurClient']) )&&( isset($_POST['SujetTicket']) )&&( isset($_POST['AffectationTicket']) ) ){ $date = dateMySQL($_POST['DateTicket']); $heure = $_POST['HeureTicket']; ?> <?php $NomClient = $_POST['NomClient']; $RecepteurTicket = $_POST['RecepteurTicket']; $InterlocuteurClient = $_POST['InterlocuteurClient']; $SujetTicket = $_POST['SujetTicket']; $AffectationTicket = $_POST['AffectationTicket']; $sql = "INSERT INTO `hotlinecc`.`tb_ticket` (`IndexTicket`,`NomClient`, `DateTicket`, `HeureTicket`, `RecepteurTicket`, `InterlocuteurClient`, `SujetTicket`, `AffectationTicket`, `StatutTicket`) VALUES('A','$NomClient','$date','$heure','$RecepteurTicket','$InterlocuteurClient','$SujetTicket','$AffectationTicket','En cours')"; $res = mysql_query($sql); print '<script language="javascript"> alert("Votre ticket à bien été pris en compte dans la base de donnée"); location.href = "Principal.php?page=4"; </script>'; } else { echo "Erreur !!"; } ?>
?
comme ça, si les valeurs sont postés, tu fais le INSERT, sinon tu affiche l'erreur, sa évite de rentrer des info vides dans la table -
tu a donc quelque chose comme ça :
<?php if( isset($_GET['page']) ){ ?> ...formulaire <?php } else{ ...insert to } ?>
?-
Voici ma page 11 t'y verra plus clair je pensse :
<?php require_once('connexion.php'); ?> <?php function dateMySQL($date) { // On découpe la date selon les "/" $dates = explode("/", $date); // On replace les jours, mois et années dans le bon ordre en ajoutant des "-" entre chaque $dateMySQL = $dates[2] . "-" . $dates[1] . "-" . $dates[0]; return $dateMySQL; } ?> <?php $date = dateMySQL($_POST['DateTicket']); $heure = $_POST['HeureTicket']; ?> <?php $NomClient = $_POST['NomClient']; $RecepteurTicket = $_POST['RecepteurTicket']; $InterlocuteurClient = $_POST['InterlocuteurClient']; $SujetTicket = $_POST['SujetTicket']; $AffectationTicket = $_POST['AffectationTicket']; $sql = "INSERT INTO `hotlinecc`.`tb_ticket` (`IndexTicket`,`NomClient`, `DateTicket`, `HeureTicket`, `RecepteurTicket`, `InterlocuteurClient`, `SujetTicket`, `AffectationTicket`, `StatutTicket`) VALUES('A','$NomClient','$date','$heure','$RecepteurTicket','$InterlocuteurClient','$SujetTicket','$AffectationTicket','En cours')"; $res = mysql_query($sql); if ($res) { print '<script language="javascript"> alert("Votre ticket à bien été pris en compte dans la base de donnée"); location.href = "Principal.php?page=4"; </script>'; } else { echo "Erreur !!"; } ?>
-
- 1
- 2