Page 1 sur 1

Retour à la ligne non pris en compte dans un textarea

Posté : 15 sept. 2015, 21:14
par blinz
Salut à tous.
Voici le problème.
Mes visiteurs post des commentaires mais les retour à la ligne ne sont pas pris en compte.
J'ai donc ma première partie avec le post du message:
<label>Détail du commentaire</label>
          <textarea class="form-control" rows="8" name="description"><?php echo !empty($_POST['description']) ? $_POST['description'] : NULL; ?></textarea>
          <?php echo !empty($erreurs['description']) ? '<div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-triangle"></i>' .$erreurs['description'].'</div>' : NULL;?>
Et une page ou je l'affiche:
<p><?php if($ligne['description'] == NULL) { echo "Non renseigné";} else {echo stripslashes($ligne['description']);}?></p>

Re: Retour à la ligne non pris en compte dans un textarea

Posté : 15 sept. 2015, 22:27
par or 1

Re: Retour à la ligne non pris en compte dans un textarea

Posté : 16 sept. 2015, 09:34
par Ryle
En complément de la réponse d'Or1 et pour être un peu plus explicite quant au problème que tu rencontres : les retours à la ligne saisis par l'utilisateur sont bien présent. Le problème c'est que le navigateur ne les interprète pas et ne les restitue donc pas à l'écran.

Pour obliger le navigateur à afficher un retour à la ligne, il faut utiliser la balise html <br> (ou <br /> en xhtml). La fonction nl2br() de php va ajouter cette balise à chaque fois qu'il rencontre un retour à la ligne dans le texte passé en paramètre. Tu pourras ainsi obtenir le résultat souhaité à l'écran :)

Nota : cette fonction ne devrait être utilisée que pour l'affichage sur le navigateur. Si tu enregistres la données en base, enregistre les retours chariots sans balises. Ainsi si un jour tu as besoin de t'en servir pour autre chose qu'un affichage html (un pdf, un export csv, ...) tu ne seras pas pollué par des balises html :)

Re: Retour à la ligne non pris en compte dans un textarea

Posté : 16 sept. 2015, 17:10
par Titan87
Nota : cette fonction ne devrait être utilisée que pour l'affichage sur le navigateur. Si tu enregistres la données en base, enregistre les retours chariots sans balises. Ainsi si un jour tu as besoin de t'en servir pour autre chose qu'un affichage html (un pdf, un export csv, ...) tu ne seras pas pollué par des balises html :)
Du coup moi j'ai une question, si on affiche le textearea dans un navigateur mais qu'on l'a aussi dans la base de données on fait comment ? merci !

Re: Retour à la ligne non pris en compte dans un textarea

Posté : 17 sept. 2015, 13:25
par Ryle
Dans ce cas, le mieux est d'utiliser la fonction nl2br() uniquement lors de l'affichage de la variable sans altérer le contenu de celle-ci.

Tu stockes ainsi ta variable en base sans les balises html, et dès le moment où tu as besoin d'afficher la donnée sur un navigateur tu fais appel à nl2br :)

Re: Retour à la ligne non pris en compte dans un textarea

Posté : 17 sept. 2015, 14:56
par Titan87
Je prends un exemple concret je fais un site dans lequel on peut donner des avis dans un textearea, donc en fait je prend la variable $avis que je met dans un nl2br ou c'est quand j'affiche cette variable que je dois la mettre ? merci je suis nouveau donc un peu perdu ^^

Re: Retour à la ligne non pris en compte dans un textarea

Posté : 17 sept. 2015, 15:04
par or 1
textarea -> sauvegarde de l'avis, pas de nl2br
affichage de l'avis dans une page html -> ajout de nl2br
un bouton pour modifier son avis, donc affichage de l'avis déjà rentré dans un textarea, pas de nl2br

si, lors de la sauvegarde, un nl2br avait été ajouté, ce dernier cas aurait posé problème.