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 :

PB avec des BR dans un textarea


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut PB avec des BR dans un textarea
    Bonjour mon intitulé parait peut être simple mais je ne savais pas comment expliquer rapidement mon problème qui est plus complexe que ça.
    En fait j'ai un formulaire d'ajout dans ma base de données.Pour cela j'ai utilisé des textarea comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea cols=\"46\" rows=\"3\" name=\"trav_pre\" size=\"60%\"></textarea>
    Le problème c'est que lorsque je tape mon texte en faisant des "Entrer" pour passer à la ligne dans mon cadre, le <br> s'ajoute automatiquement dans la base ça c 'est bien mais lorsque j'affiche ma page qui me permet de faire une modification du texte que j'ai déjà tapé et que je veux mettre à jour il m'affiche le <br> en texte brut et m'en rajoute un deuxième derrière!! Je sais pas si je me fais bien comprendre. En fait je souhaiterai qu'il ne m'affiche pas mon <br>. Si quelqu'un pouvait m'aider.
    Je vous remercie. Bonne journée à vous.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Je pense que tout simplement, tu ne devrais pas enregistrer les BR dans la base (ni toute autre conversion d'ailleurs) mais plutot l'enregistrer en brut texte.
    Ensuite quand tu veux les afficher, tu peux décider d'ajouter la mise en forme (notamment à l'aide de la fonction nl2br() qui permet de transformer les sauts de ligne en br automatiquement).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut re:
    C est ce que j'ai fait voici le code avant insertion dans la base de donnéees:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $trav_pre = htmlentities($_POST['trav_pre'], ENT_QUOTES);
    $trav_pre= nl2br($trav_pre);
    Le <br> je ne le tape pas à la main quand j'appuie sur entrer dans mon champs de saisie il se rajoute automatiquement mais lorsque je fais l'affichage dans ma page de mise à jour dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea cols=\"20\" rows=\"3\" name=\"trav_pre\" size=\"60%\">$result[Travaux_prevoir]</textarea>
    Et bien cela m'affiche:
    test test<br />
    test<br />
    test
    Et je souhaiterai qu'ils ne s'affichent pas. De plus si je reclique sur mise à jour alors que je n'ai pas modifié ce champs mais un autre il me rajoute encore les <br>!! A chaque MAJ il me les rajoute!
    Merci pour ton aide.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Justement non, tu fais des modifications avant insertion dans la bdd !!

    Lorsque tu fais celà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $trav_pre = htmlentities($_POST['trav_pre'], ENT_QUOTES);
    $trav_pre= nl2br($trav_pre);
    Tu encodes ta chaine en entités HTML puis tu remplaces les sauts de ligne par des BR !
    Or, cette étape doit etre faite lorsque tu fais un affichage de ce champ dans une page mais pas pour enregistrer en bdd.

    Pour résumé, la marche à suivre est la suivante.

    Pour insérer en bdd:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $champ_texte=$_POST['trav_pre'];
    $requete="insert into xxxx ('champ_texte') values ('".mysql_real_escape_string($champ_texte)."')";
    Ensuite, pour réafficher dans un textarea le champ contenu en bdd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $champ_texte=$ressource_sql['champ_texte'];
    echo '<textarea>'.$champ_texte.'</textarea>';
    Pour afficher dans une page web directement (pas dans un textarea donc mais dans le flux html classique.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $champ_texte=nl2br(htmlentities($ressource_sql['champ_texte'],ENT_QUOTES));
    echo $champ_texte;
    En somme, lorsque tu insères en bdd, tu n'as pas besoin d'encoder ta chaine, il faut l'enregistrer telle quelle (il faut simplement échapper les caractères sensibles au niveau de la sécurité de la requête).
    Lorsque tu veux ensuite afficher ce champ dans un textarea, tu le récupères dans la bdd et tu l'affiches sans rien d'autres.
    Et lorsque tu veux l'afficher dans une page web, en affichant les sauts de lignes etc, tu lui passes un htmlentities et un nl2br.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut RE:
    Cela ne fonctionne toujours pas mais ça vient bien de ça à mon avis.
    en fait je fais tout sur la même page. Je vais essayé de faire simple.

    Mon formulaire se trouve sur la page formajout.php
    Mon insertion (MAJ se fait sur la page update.php

    Je passe mon texte en brut de formajout a update.
    Dans update je mets a jour sans modification.

    Une fois la modif faite, je renvoie sur formajout et la j'affiche directement dans le textarea le texte mais cette fois ci modifié par le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $trav_pre = htmlentities($_POST['trav_pre'], ENT_QUOTES);
    $trav_pre= nl2br($trav_pre);
    Et donc la le textarea qui me sert a faire la modif me sert d'affichage aussi donc des que je reclic sur MAJ si je veux mettre autre chose a jour que j'aurai oublié et bien il me le remplace mais avec les texte modifié.

    Merci beaucoup de ton aide.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Tu peux donner le code de formajout et de update alors que je vois concrètement comment c'est fait s'il te plait?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut code
    Formajout me permet de en fait de visualiser une fiche d'un logement en détail et aussi de faire les mises a jour. Avant cela je crée la fiche avec une autre page mais cela ne pose aucun problème.

    Voila le code de formajout:

    Pour l'affichage et la mise a jour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $trav_pre = htmlentities($_POST['trav_pre'], ENT_QUOTES);
    $trav_pre= nl2br($trav_pre);
    (tout le code se trouve entre deux balise PHP)
    <form method=\"post\" action=\"?page=update&dossier=admin&num=$num&secteur=$result[secteur]&naturedubien=$result[Naturedubien]&transaction=$result[Transaction]\">
    <table width=\"90%\" border=\"1\">
      <tr>
        <td width=\"60%\" height=\"200\" align=\"left\" >
          <table width=\"100%\" height=\"200\" border=\"1\">	
            <tr>						
              <td width=\"25%\">Travaux &agrave; pr&eacute;voir:</td>	
              <td width=\"25%\"><textarea cols=\"20\" rows=\"3\" name=\"trav_pre\" size=\"60%\">$result[Travaux_prevoir]</textarea></td>		
            </tr>
          </table>
        </td>
      </tr>
    </table>
    </form>
    Voila le code de update:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    include("admin/connectbase.php");
     
    mysql_query ("UPDATE bien_immo SET Prix_HT='$pxht',Prix_nego='$pxnego',secteur='$secteur',Naturedubien='$nature',Dispo='$dispo',Type='$type',Surf_terrain='$surf_ter',Surf_habitable='$surf_hab',Surf_sejour='$surf_sej',Nb_piece='$nb_piece',Nb_chambre='$nb_chambre',Nb_salle_eau='$nb_eau',Nb_salle_bain='$nb_bain',Nb_WC='$nb_wc',Cuisine='$cuisine',Chauffage='$chauffage',Charges='$charges',Equipement='$equipement',Travaux_recents='$trav_rec',Travaux_prevoir='$trav_pre',Mittoyen='$mittoyen',Etat='$etat',Annee_construction='$annee_constru',Isolation='$isolation',Facade='$face',Toiture='$toit',Stationnement='$statio',Cave='$cave',Grenier_amenageable='$grenier_ame',Ss_sol='$ss_sol',cheminee='$cheminee',assainissement='$assainissement',moyens_visite='$moyens_visite',px_tfc='$px_tfc',px_estimer='$px_estimer',Transaction='$transaction',Commentaire='$commentaire',Detail='$detail' WHERE Numbienimmo='$num'");
    include ("admin/fiche_detail.php");

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    A vue de nez, je dirai que tu peux mettre en commentaires ces deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $trav_pre = htmlentities($_POST['trav_pre'], ENT_QUOTES);
    $trav_pre= nl2br($trav_pre);

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 70
    Par défaut
    Si je les mets en commentaire ça ne gére plus le passage à la ligne automatiquement lorsque je tape sur entrer. Tout s'écrit à la suite sans passer à la ligne.

Discussions similaires

  1. JTable avec des JPanel dans les cellule
    Par pigpen dans le forum Composants
    Réponses: 11
    Dernier message: 13/04/2006, 19h58
  2. Liaison avec des images dans une table
    Par ValérieBruxelles dans le forum Access
    Réponses: 5
    Dernier message: 25/11/2005, 14h21
  3. Prbleme de liaison avec des doublons dans le fichier lié.
    Par krak70 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/10/2005, 11h03
  4. [VB.NET] Requete avec des dates dans un DataSet
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/10/2005, 14h30
  5. Réponses: 9
    Dernier message: 25/09/2005, 16h33

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