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

PHP & Base de données Discussion :

Problème avec nl2br et saut de ligne. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut Problème avec nl2br et saut de ligne.
    Bonjour,
    J'ai un script qui utilise une zone TXT dans une base Mysql.
    Dans cette zone les utilisateurs peuvent mettre des commentaires qui contienne des sauts de ligne.
    Quand je veux afficher cette zone en infobulle les codes ascii 10, 13 (correspondant au CR retour charriot) l'affichage ne se fait pas.
    Lorsque je supprime se saut de charriot l'affichage se fait.
    Je suis donc passé par la commande nl2br pour générer des <BR/> dans ma zone, et ça ne marche toujours pas, et affichage ascii fait je me rend compte que le CR et toujours présent et c'est lui qui me bloque.
    Quelqu'un peut-il m'aider.
    Merci

  2. #2
    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
    Comment fais-tu ton infobulle ?
    Est-ce que tu arrives en HTML a avoir la mise en forme que tu souhaites ?

  3. #3
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour sabotage.
    Pour l'infobulle j'utilise le script du lien suivante:
    http://damienalexandre.fr/Info-Bulle-en-Javascript.html
    et ca marche super bien quand je n'ai pas de saut de ligne dans ma zone texte.

  4. #4
    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
    Peux tu nous montrer precisemment ce que tu fais ?

    Tu dis que qu'après nl2br() tu vois toujours des retours chariot, mais vois-tu le <br/> ?

  5. #5
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Dans ma zone texte, pour tester je ne me suis pas embetté jai mis A, j'ai fais ligne suivante et j'ai mis B.
    Voici le code ASCII:
    Avant nl2br
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A Bcode ascii A 65
    code ascii 13
    code ascii 10
    code ascii B 66
    Après nl2br
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    A
    Bcode ascii A 65
    code ascii < 60
    code ascii b 98
    code ascii r 114
    code ascii 32
    code ascii / 47
    code ascii > 62
    code ascii 13
    code ascii 10
    code ascii B 66
    Je comprend pourquoi il ne touche pas au CR, car apparement c'est interprété par nl2br comme du texte, alors qu'il est bien interprété comme un saut de ligne par le script.

  6. #6
    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
    nl2br() fait des remplcements par "<br />\r\n"

    Mais pourquoi tu te focalises la dessus ? A tu testé ton infobulle en saisissant toi même un <br /> ?

  7. #7
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    J'ai effectivement testé en mettant <BR/> dans ma zone de commentaire et l'affichage se fait bien !

  8. #8
    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
    Et si tu remplaces ce <br/> par
    ?

  9. #9
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Et si tu remplaces ce <br/> par
    ?
    Je pige pas ? tu veux que dans ma zone commentaire je mette ?

  10. #10
    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
    Je te parle de tester ton infobulle en oubliant ton textarea.
    Comment tu as testé le <br/> précédemment ?

  11. #11
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Dans ma zone commentaire j'ai mis et a mon affichage de l'infobulle j'ai bien
    A
    B
    Maintenant si j'oublie mon textarea et que je met directement dans le code php, c'est pareil, pas d'affichage!

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    nl2br ne remplace pas les (\r)\n, comme l'a souligné sabotage, mais ajoute un <br /> avant ceux-ci. Or ils ne passent pas en Javascript (non littéraux). Il faut donc les remplacer ([str|preg]_replace par exemple) ou les échapper (ça marche aussi, a priori, mais ils apparaîtront dans la source) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... onmouseover="montre('<?php echo addcslashes(preg_replace('~\r\n|\r|\n~', '<br />', $texte), "'\\"); ?>');" ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... onmouseover="montre('<?php echo addcslashes(nl2br($texte), "'\r\n\\"); ?>');" ...

  13. #13
    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
    J'ai pris le temps de tester le code et je comprends mieux
    En javascript on ne peut effectivement pas casser une ligne.

    La seule solution que je vois est de faire un nl2br() sans les retours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onmouseover="montre('<?php echo preg_replace("#\r\n|\n\r|\r|\n#","<br/>",htmlentities($_POST['commentaire'])); ?>');" />

  14. #14
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour julp.

    Merci à vous deux, vous êtes géniaux, ça marche.

    Bon après-midi

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

Discussions similaires

  1. Problème avec nl2br() et strip_tags()
    Par Mo_Poly dans le forum Langage
    Réponses: 6
    Dernier message: 08/09/2009, 21h05
  2. Réponses: 2
    Dernier message: 02/04/2009, 13h23
  3. Réponses: 1
    Dernier message: 24/04/2008, 10h07
  4. [XSL] probléme pour imprimer un saut de ligne (<br> )
    Par linniesurf dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/01/2006, 17h55
  5. problème avec le caractère saut de ligne ...
    Par vbcasimir dans le forum Administration
    Réponses: 2
    Dernier message: 17/06/2004, 17h35

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