Php saut de ligne dans les textarea

Bonjour,

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

Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. <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
    5
    1. oui merci
      mais est ce que c'est possible de pas mettre les <br> lorsque je tape mon texte
      tous comme je le fait la sur "comment ca marche" ?
      0
  2. 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
    0
    1. Contributeur
      Pas 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
      0
      1. et remet les nl2br()
        0
        1. 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 ^^)
          0
          1. Contributeur
            Dans 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() ...
            0
            1. oui j'ai les nl2br() dans ces 2 page la jlé ai enlevé j juste laissé : $SujetTicket = $_POST['SujetTicket'];
              mais par contre le saut de ligne ne se fait plus donc voila c 'est ca le probleme lol ....

              mais bon mercii passarinhno 44 ;-))
              0
            2. on continu pour trouvé ce pti probleme lool !!

              alors di moi dans quelle page ta koi et ta pas ok :

              dans la page Nouveau Ticket est ce que ta quelque chose concernant le saut de ligne ?
              Dans la page message.php est ce que ta quelque chose "" "" ?

              On va dabor voir c'est 2 page la ok .
              0
          2. Contributeur
            Ben 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 ...
            0
            1. toi je croi ta version ke jté envoyé
              el fait les saut de ligne teste tu comprendra plus vite je pensse.
              0
          3. Contributeur
            Oui 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 /> ??
            0
            1. oui mais je ne trouve pas ou !!

              j'ai sa dans ma base de <br />

              d<br />
              d<br />
              d<br />
              0
          4. Contributeur
            Ben 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.
            0
            1. 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
              0
          5. Contributeur
            Essaie de changer le ==10 par un >= 10
            0
            1. c'est bon c'est parfait bon faut que je regle ce probleme de saut de ligne la et c'est presque fini !! lol

              t'en ai ou toi dans ta note de synthese tu la commencé quand ?
              0
          6. Contributeur
            Non 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.
            0
            1. re

              tu sais le scripte javascripte pour le blocage de caracter que tu ma passé ce matin, il y a une faille
              il bloque que la 1er ligne a 10 caractere j'appui sur entré je peux retapé le nombre de caractere que je veux .

              T'avais remarqué ? c dommage c'etait ce que je voulais
              0
          7. Contributeur
            Non, 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().
            0
            1. 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....
              0
          8. Contributeur
            Je 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 ^^
            1
            1. 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 ?
              0
          9. Contributeur
            Ben 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
            0
            1. "Ben 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 />! "

              J'ai du mal a saisir sa tu peut etre plus précis stp.

              p.s : connais tu un logiciel pour créer facilement un shema des flux ?
              0
          10. 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
            0
            1. .... Auriez vous une solution pour que le saut de ligne se fasse mais sans l'apparition des "<br />"..

              Merci d'avance
              0
            2. Contributeur
              @s_sniperDans la textarea ou sur ta page HTML?
              0
            3. @Passarinho44nan sur ma page lorsque je clique sur modifier sa me rapporte le texte mais avec les br c'est mochee je trouve !!
              0
          11. jsui toujours la ouai ^^
            0
            1. 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
              0
          12. j'ai cru que j'y arriverai jamais :p ^^
            0
            1. lool quand meme!! ;-)
              0
            2. est ce que t'est toujour la j'ai un petit detail a te demandé !!
              0
          13. 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 !!";
            }
            
            
            ?>
            
            
            1
            1. oui merci c'est bon sa marche

              merci beaucoup sonik!! ;-))
              0
          14. 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
            0
            1. oui sa c'est un detail que je verrais plus tard mais merci mais parce que c'est possible des info reste vide ...
              pour l'instemp faut que je puisse faire des saut de ligne comme je veux ce que je n'arrive pas lol !!!!!
              0
          15. tu a donc quelque chose comme ça :

            <?php 
            if( isset($_GET['page']) ){
            ?>
            ...formulaire
            <?php
            }
            else{
            
            ...insert to
            
            }
            ?>
            

            ?
            0
            1. 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 !!";
              }
              
              
              ?>
              0
          • 1
          • 2