Php saut de ligne dans les textarea
gillosHK -
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
- 1
- 2
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 <br /> 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 <br />, 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 -
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 !!"; } ?> -
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 ^^-
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 ?
-
-
c'est une fonction nl2br()
<?php echo(nl2br($_POST["lot_resum"])); ?> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
tu veut dire lors de l'édition ? si c'est de sa dont tu parle, tu fais comme ceci :
<?php $texte = str_ireplace ( "<br />", "", $texte); ?> <textarea name="descript" cols=50 rows=10><?php echo $descript; ?></textarea>
-
Oui sa me met une erreur lors de l'envoi
voila comment j'ai interpreté ton code :
<tr> <?php $SujetTicket = str_ireplace ( "<br />", "", $SujetTicket); ?> <td align="right">Sujet du ticket : </td> <td><textarea id="SujetTicket" name="SujetTicket" cols="30" rows="4"><?php echo $SujetTicket; ?></textarea></td> </tr> <tr> <td align="right">Affecté à :</td> <td><select type="text" id="AffectationTicket" name="AffectationTicket"> <?php include ("connexion.php"); $SQL = "SELECT TrigrammeOperateur FROM tb_operateur"; $res = mysql_query($SQL); while($AffectationTicket=mysql_fetch_array($res)) { echo "<option>".$AffectationTicket["TrigrammeOperateur"]."</option>\n";}?> </select> </td> </tr> <td colspan="2" align="center"><input type="submit" value="Créer le ticket"/><br><br><br> <td align="center"><input name="reset" type=reset value="Effacer le formulaire"/> </table> </fieldset> </form> </center> <?php if(isset($_POST['SujetTicket'])){ $SujetTicket = nl2br($_POST['SujetTicket']); // met des <br /> a chaque retour chariot echo $SujetTicket; //affiche le texte } else{ } ?>
-
-
-
ba enfette dans mon script php qui permet l'envoi qui fait la requete
j'ai un if avec si sa a bien envoyé affiché "votre ticket a bien eté pri en compte"
sinon affiché "erreur"
la sa m'affiche erreur mais sa vien de ce que j'ai mis en gras car je l'est testé avant :
:name="SujetTicket" cols="30" rows="4"><?php echo $SujetTicket; ?>
Sinon ce que tu m'a passé il sont au bon endroit et bien approprier avec la zone de texte de mon forme apellé "sujetticket " ?
-
-
pour le script que je t'ai passé, il est au bon endroit, du moins si c'est sur cette page que tu envoi le formulaire.
sinon tu a bien mis le <form method="POST" action="#"> en haut de page ? un petit oubli est si vite arrivé... on ne sait jamais ^^ -
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 !!"; } ?>
-
-
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 -
-
-
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
-
-
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 -
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 -
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().-
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....
-
-
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. -
-
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.-
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
-
-
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 /> ?? -
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 ...
- 1
- 2