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 :

[PHP-JS] Afficher le contenu dans le textarea de la même manière que dans la page


Sujet :

Langage PHP

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut [PHP-JS] Afficher le contenu dans le textarea de la même manière que dans la page
    Bonjour,

    J'essaie de faire un petit wiki et là déjà j'ai un souci.

    Je récupère un texte dans la base de donnée. Dans ce texte il y a des <br>.

    Pour bien faire, il faudrait qu'en affichant le texte dans le textarea, les sauts de lignes se fassent en fonction des <br>.
    Or il se font plus ou moins intempestivement, en fonction de la taille du textarea, ai-je l'impression.

    Du même coup, quand je valide, le nl2br() me colle des sauts de ligne partout, en plein milieu de phrase et tout, en fonction de ce qu'il y avait dans le textarea.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    1) texte se présentant comme ça dans la base de donnée :
    J'ai beaucoup de <a href="http://www.site.com/page.htm">travail</a> et j'en suis heureux.<br>
    un individu veut
    m'en donner encore.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2) affichage du texte ci-dessus dans la page : 
    j'ai beaucoup de travail et j'en suis heureux.
    un individu veut m'en donner encore.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    3) affichage du texte dans le textarea : 
    J'ai beaucoup de <a href="http://www.site.com/page.htm">travail</a> et
     j'en suis heureux. Un individu veut m'en donner encore.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4)affichage modifié :
    J'ai beaucoup de travail et 
    j'en suis heureux. un individu veut m'en donner encore.
    Donc là vous voyez le problème : normalement l'affichage devrait être identique aux étapes 2 et 4. Mais comme à l'étape 3 le textarea m'invente des sauts de ligne et ne respectent pas ceux qui existent (les <br> de l'étape 1), cette mise en page douteuse se retrouve à l'étape 4 après validation du formulaire de l'étape 3.

    Bien sûr il est impossible de demander à l'utilisateur de reproduire tous les sauts de ligne. Il faut donc qu'entre l'étape 2 et l'étape 3, l'affichage soit exactement similaire.

    Comment faire, s'il vous plait... ?

  2. #2
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Je viens d'essayer sur wikipedia, à priori chez eux un simple retour à la ligne n'est pas reproduit. Il faut carrément sauter une ligne. C'est une solution un peu bof, mais c'est une solution quand même.

    Par contre dans cette optique, je ne vois pas du tout comment dire au textarea de faire un saut de ligne car la fonction nl2br() ne gère que les simples retour à la ligne.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 154
    Points : 164
    Points
    164
    Par défaut
    salut,

    lors de l'étape 3, le problème est que ton br, lorsqu'il est chargé dans ton textarea devient un simple passage à la ligne... Mais que certains passages à la ligne que tu fait ne doivent pas être perçus comme tel...

    Logiquement, tu ne devrais pas utiliser de br quand tu encode ta page mais lorsque tu affiche celle-ci en html, effectuer un nl2br() ou un str_replace("\n","<br />\n",$content).

    Dans ton cas, le plus simple semble être l'utilisation d'un bbcode. Remplacer les <br /> par des [br] à l'encodage par exemple et les remplacer lors de l'affichage.

  4. #4
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Salut Orgied, je te remercie de ta réponse, je vais voir ce que ça donne.


    J'ai trouvé ça aussi sur le net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $Votretxt=str_replace(" \0","",$Votretxt);
    $Votretxt=str_replace(" \n","",$Votretxt);
    $Votretxt=str_replace(" \r","",$Votretxt);
    $Votretxt=str_replace("\0","",$Votretxt);
    $Votretxt=str_replace("\n","",$Votretxt);
    $Votretxt=str_replace("\r","",$Votretxt);
     
    $definition=str_replace("<br>", "\n", "$definition");//rajouté par moi
    Le gars a l'air d'avoir eu un problème un peu similaire. Mais par contre, je ne sais pas à quoi correspondent ces différents signes : \0 , \r etc... Que veut dire exactement le bout de code ci-dessus

  5. #5
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Bon alors ça s'améliore avec le code ci-dessus, mais je navigue à vu car je ne connais pas la signification.des \r et \0. Je ne vois pas non plus pourquoi il faut les marquer deux fois de suite.

    Donc maintenant, si j'ai le texte de l'étape 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    J'ai beaucoup de <a href="http://www.site.com/page.htm">travail</a> et j'en suis heureux.<br>
    un individu veut
    m'en donner encore.
    ça m'affiche dans le textarea :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    J'ai beaucoup de <a href="http://www.site.com/page.htm">travail</a>et j'en suis heureux.
    un individu veutm'en donner encore.
    Donc là les saut de lignes se font normalement : les <br> se transforme en \n et les sauts de lignes intempestifs n'existes plus. Sauf que... Si vous regardez bien le "et" est collé au lien et on a écrit veutm'en sans espace entre veut et m'en.
    Comment rétablir cet espace ?

  6. #6
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Bon bah la vie est belle j'ai fait ça et apparement c'est résolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Votretxt=str_replace(" \0"," ",$Votretxt);
    j'ai donc rajouté un espace dans le " " .


    Mais je laisse le sujet ouvert car à coup sûr un autre problème va pointer son nez.

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    tu n'aurais pas mal défini ton "textarea" avec un attribut "wrap" ? ton problème de retour à la ligne peut venir de là, il ne faut pas utiliser "wrap"

  8. #8
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Ca c'est le code du textarea :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea name="definition" cols="60" rows="15" ></textarea>
    Ce qui est bizarre, c'est que normalement, un textarea peut avoir une barre de scroll horizontale.
    Alors pourquoi me faire des retours à la ligne en cas de liens, par exemple ?

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    bonjour,
    il faut rajouter en stylesheets le fait qu'il ne retourne pas à la ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    white-space:nowrap;

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/05/2013, 14h24
  2. [PHP-JS] Récupération du contenu d'un textarea
    Par adoumaz dans le forum Langage
    Réponses: 6
    Dernier message: 08/02/2011, 11h25
  3. Réponses: 10
    Dernier message: 12/01/2010, 11h06
  4. Ecrire de manière "formatée" dans un textarea
    Par Emilie012 dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2008, 22h00
  5. Réponses: 4
    Dernier message: 15/12/2006, 21h43

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