IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

saisie de texte / <br/> & \n\r / php mysql


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut saisie de texte / <br/> & \n\r / php mysql
    salut à tous,

    petit soucis de saut de ligne sur une saisie de texte dans un TEXTAREA.....

    contexte:
    -> 1 textarea de saisie libre
    -> stockage en base mysql (champs TEXT)
    -> affichage php dans une autre page

    symptôme:
    -> je saisis par exemple:
    "Extensions de fichiers valides: 7z as asm asp aspx bz2 c cpp cs css doc docx fla gif gz h hpp htm html java jpeg jpg js ods odt pas pdf php pl png psd py.

    attention, taille max = 5 mo!"

    -> il y a donc 2 sauts de lignes: après le '.' et avant "attention"......

    -> dans mon champs mysql on retrouve bien la même chose

    -> pour restituer les sauts de ligne en affichage PHP/HTML simple je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo str_replace("\n\r", "<br/>", $string);
    problème:
    -> j'obtiens
    "Extensions de fichiers valides: 7z as asm asp aspx bz2 c cpp cs css doc docx fla gif gz h hpp htm html java jpeg jpg js ods odt pas pdf php pl png psd py.
    attention, taille max = 5 mo!"

    -> donc sans le saut de ligne entre les 2 paragraphes!

    -> en gros il y a que n-1 sauts de ligne pris en compte

    -> si je veux vraiment afficher
    "Extensions de fichiers valides: 7z as asm asp aspx bz2 c cpp cs css doc docx fla gif gz h hpp htm html java jpeg jpg js ods odt pas pdf php pl png psd py.

    attention, taille max = 5 mo!"

    -> je dois saisir
    "Extensions de fichiers valides: 7z as asm asp aspx bz2 c cpp cs css doc docx fla gif gz h hpp htm html java jpeg jpg js ods odt pas pdf php pl png psd py.


    attention, taille max = 5 mo!"

    -> soit un saut de ligne supplémentaire...............

    pourquoi?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour :
    pour restituer les sauts de ligne en affichage : nl2br()
    Retourne string après avoir inséré "<br />" ou '<br>' devant toutes les nouvelles lignes (\r\n, \n\r, \n et \r).

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    le saut de ligne doit être plutôt \r\n que \n\r
    mais il existe déjà la fonction nl2br() pour faire ça.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Grilled, Sabotage !

  5. #5
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 253
    Points
    253
    Par défaut
    Ce qui explique la source du probléme car si on est en présence de :

    \n\r\n\r

    Et que str_replace remplace le \n\r par le tag <br/>, ainsi le résultat est :

    \n<br/>\r

    D'ou le résult final avec n-1 saut de ligne.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    J'avais effectivement commencé par nb2lr()...

    MAIS cela induit un problème encore pire, et lié à la largeur du TEXTAREA!
    -> il transforme aussi en <br/> les fins de lignes dus au formatage de la largeur du TEXTAREA

    Heu... comment dire?

    Imaginons un TEXTAREA de largeur max 31 caractères.

    je saisis donc:

    "Extensions de fichiers valides:*
    7z as asm asp aspx bz2 c cpp*
    cs css doc docx fla gif gz h *
    hpp htm html java jpeg jpg js*
    ods odt pas pdf php pl png *
    psd py.

    attention, taille max = 5 mo!"

    * symbolisant les passages à la ligne automatiques du TEXTAREA et dus à la largeur max de 31 caractères != saut de ligne (ENTER)

    Or br2nl() va aussi convertir ces * en <br/>

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par Ethan 0x21 Voir le message
    Ce qui explique la source du probléme car si on est en présence de :

    \n\r\n\r

    Et que str_replace remplace le \n\r par le tag <br/>, ainsi le résultat est :

    \n<br/>\r

    D'ou le résult final avec n-1 saut de ligne.
    si tu me disais remplacer \r\n par <br/> dans une chaine \n\r\n\r je serais d'accord avec toi......

    mais avec \n\r je ne comprends pas ton raisonnement..........

  8. #8
    Invité
    Invité(e)
    Par défaut
    Imposer la largeur d'un textarea N'a JAMAIS entrainé des passages à la ligne !?

    Fi du blabla ; montre des lignes de code :
    • code du formulaire + <textarea> ?
    • code de récupération du formulaire + enregistrement en Bdd (comment ?)
    • code de récupération de l'enregistrement en Bdd ?
    • code de ré-affichage ?

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Imposer la largeur d'un textarea N'a JAMAIS entrainé des passages à la ligne !?
    Ben SI justement!!

    -> avec un wrap="hard" (que j'ai passé à soft maintenant) par exemple................

    -> ........... ce qui était bien le problème avec nl2br()!

    Donc pour les autres qui ignorent également ce point:
    -> wrap="soft" + nl2br() = OK
    -> wrap="hard" + nl2br() = HS


  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    En même temps, c'est le comportement attendu pour wrap="hard"...

    Utiliser une propriété sans connaitre son comportement, c'est s'exposer à ce genre de mésaventure !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saisie du texte dans Msgbox
    Par tamyme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 14h53
  2. [MS-DOS] Saisie de texte
    Par Furius dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 01/10/2005, 19h27
  3. Réponses: 2
    Dernier message: 08/08/2005, 11h27
  4. [c#]Champs de saisie de texte
    Par Verboz dans le forum ASP.NET
    Réponses: 5
    Dernier message: 03/05/2005, 15h01
  5. saisi champs texte
    Par j2zetka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo