Pré-remplir des champs form

Résolu
Bonsoir a tous,
J'ai fait un formulaire pour ajouter une fiche dans une table. Jusque là OK !
Maintenant, je voudrais donner la possibilité (à ceux qui auront le droit de modifier une fiche existante) d'avoir les données des champs renseignés dans la table sur le formulaire de modification.
J'ai essayé plusieurs scripts en php mais aucun n'est réaliste. Dans l'un d'eux, c'est le php qui génére le formulaire avec les datas à l'intérieur mais ce n'est pas la bonne fiche (à priori c'est toujours la derniere (dernier id).
De plus, il m'est impossible d'avoir un formulaire avec des listes déroulantes ce qui permettrait d'avoir toujours la même orthographe pour une catégorie donnée par exemple (et pas un coup, une écriture, un autre une autre écriture etc...; bref que ce soit homogène).
L'exemple est ici: http://txiki.free.fr/fiche-ajout.gif
Celui-la est OK.
Tout part d'ici en fait: http://txiki.free.fr/liste.php
Ajouter fiche: login= tintin, pass=tinotibet. (original non ?

merci pour vos réponses.

--
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Configuration: Windows XP
Firefox 1.5.0.10

17 réponses

  1. Bonjour,

    quand la personne clique sur la fiche on va dire que ce sera par l'id, exemple : fiche_modifs.php?id=256

    Ici dans ton "fiche_modif.php", tu vérifies tout d'abord que l'id soit renseignée :

    <?php
    if(isset($_GET["id"]))
    {
    $id = $_GET["id"];
    // on se connecte à la bdd pour récupérer les informations de la fiche
    $res = mysql_query(" SELECT * FROM `t_fiches` WHERE fiche_id = '".$id."' ");
    // si un enregistrement correspond
    if(@mysql_num_rows($res) > 0)
    {
    // c'est ok alors on récupère les infos
    $titre = stripslashes($row["fiche_titre"]);
    $contenu = stripslashes($row["fiche_contenu"]);
    // .....
    ?>
    <form name="blabla" action="fiche_modif.php" method="post">
    <input type="hidden" name="fiche_id" value="<?=$id;?>" />
    <input type="text" name="fiche_titre" value="<?=$titre;?>" />
    <textarea name="fiche_contenu"><?=$contenu;?></textarea>
    <!-- ........ -->
    <input type="submit" value="Valider la modification" />
    </form>
    <?php
    }
    // si l'id n'est pas correcte on affiche une erreur
    else echo "Désolé mais aucun enregistrement ne correspond
    }
    // si l'id n'est pas renseignée on affiche une erreur
    else echo "Erreur, l'id n'a pas été renseignée
    ?>

    J'espère que ça t'aidera,

    Thomas
    9
    1. Bonjour,

      pour tes champs de type déroulant c'est pareil, regarde :

      <?php
      $menuderoulant = $row["menuderoulant"];
      // on se connecte à la base pour récupérer les tables qui contiennent les valeurs du menu déroulant et pour les comparer a la valeur actuelle
      $res2 = mysql_query(" SELECT * FROM `t_tatable` WHERE chepakoa = 'chepakoua' ");
      // si des enregistremente existent bien
      if(@mysql_num_rows($res2) > 0)
      {
      echo '<select name="tonmenuderoulant" id="tonmenuderoulant">';
      while($row2 = mysql_fetch_array($res2))
      {
      $valeur = $row2["valeur"];
      ?>
      <option value="<?=$valeur;?>"<?php if($valeur == $menuderoulant") echo 'selected="selected"';?>><?=$valeur;?></option>
      <?php
      }
      echo '</select>';
      // sinon on affiche un message d'erreur

      }
      else echo "Désolé mais aucun enregistrement ne correspond, y'a u bleme !";
      ?>

      Voilà, je sais pas si ça t'aidera :)

      Thomas
      6
      1. Contributeur
        Salut thomas et merci pour ta réponse,
        Excuse moi pour ce retard mais je suis sur un autre Pb (nouvelle version de l'intranet)....
        Ton idée de partir d'une fiche n'est pas bête du tout !
        Si j'ai bien compris, j'affiche une fiche détaillée (laquelle contiendra un bouton "Modifier" et qui pointera vers le formulaire de modification (pré-rempli).
        La question que je me pose est:
        Comment conserver les champs de type "liste déroulante" ?
        Mais je teste et te tiens au courant.
        A + et merci pour l'idée.
        1
        1. Contributeur
          Oulààààààààààààà !
          j'en ai un paquet de champs liste....
          ça me complique la tâche.
          Puis-je utiliser les names desliste déroulantes en guise de variables ?
          Merci encore !
          1
          1. Grand merci thomas!!
            même prèsque un an après ça sert bien ;o)
            1
            1. Bonsoir
              j'ai un 1er formulaire qui comporte entre autre une zone de texte (textarea), après soumission de ce 1er formulaire, un 2ème formulaire réaffiche les éléments du 1er et vérifie si des informations obligatoires du 1er n'ont pas été omises.
              Je voudrais réafficher le texte contenu dans la zone de texte du 1er formulaire.
              Merci de votre aide
              0
              1. Contributeur
                salut,

                mets la valeur entre la balise d'ouverture et la balise de fermeture.
                <textarea>blablabla</textarea>
                0
            2. Bonjour, quelques mois après cette fois-ci.

              Je suis d'accord avec ça : <textarea>blablabla</textarea>
              Mais si dans blablabla il y a des sauts de ligne <br/> ou \r\n, comment les transformer en réels sauts de ligne dans la textarea ????

              Merci pour l'aide.
              A+++
              0
              1. Contributeur
                Adobe Igs graffeursalut,

                si tu utilises PHP tu peux utiliser "\n" entre guillemets ça devrait sortir correctement.
                0
            3. si tu utilises PHP tu peux utiliser "\n" entre guillemets ça devrait sortir correctement.

              Bonjour,
              En fait j'ai le choix entre utiliser blablablabla contenant des <br/> ou blablablabla contenant des \n\r.
              Mon problème est que si j'utilise l'un ou l'autre je me retrouve avec des <br/> ou des \n\r dans ma textearea.
              Je voudrais de vrais sauts de ligne (visibles).

              Merci de votre aide.
              0
              1. Contributeur
                salut,

                montre-nous le bout de code, stp.
                0
                1. Salut,

                  en fait c'est pour ajouter/modifier des news sur un site.
                  j'ai ma textarea :
                  <textarea>blablabla</textarea>

                  Soit j'utilise $nouvelle à la place de blablabla. $nouvelle est du type .............<br/>............<br/>....................
                  Soit j'utilise $donnees['nouvelle'] à la place de blablabla. $donnees['nouvelle'] est de type .........\n\r............\n\r.......

                  Moi ce que j'aimerai dans ma textearea c'est :
                  ............
                  .............
                  ...........

                  Voilà. J'éspère que c'est compréhensible.
                  Merci
                  0
                  1. Contributeur
                    essaie avec :
                    $donnees['nouvelle'] = "\r\nblablabla\r\n";
                    0
                    1. Salut Dalida, merci pour ton aide !!!

                      Mais je sais pas si tu as bien compris mon problème.
                      Je cherche à pré-remplir une zone de texte (textarea) mais je ne sais pas comment faire passer à la ligne.
                      Surtout j'utilise une variable pour pré-remplir cet zone de texte, alors par quoi je dois remplacer <br/> ou \n\r pour que ça me fasse les sauts de lignes.

                      A ce que j'ai pu comprendre, <textarea>blablabla</textarea> : le blablabla n'est pas du html (parce que quand je met des balises je les retrouve en toute lettre) ni du php.
                      J'ai vu aussi que quand je tape à la main le blablabla, si je vais à la ligne (dans le code) ça passe bien.

                      Dois-je découper ma variable qui contient blablabla et faire les sauts de ligne dans le code (trop lourd) ??
                      0
                      1. Salut,

                        moi j'ai bien compris ton problème, et je rencontre le même aujourd'hui, as tu trouvé une solution ?

                        En gros, on veut pré remplir un input texterea avec dedans :
                        "coucou première ligne
                        deuxlième ligne"


                        si on met :
                        $textAreaValue = "coucou première ligne<br />deuxlième ligne"
                        ou
                        $textAreaValue = "coucou première ligne\ndeuxlième ligne"

                        Ca s'affiche : "coucou première ligne<br />deuxlième ligne" dans la page html, au lieu de
                        "coucou première ligne
                        deuxlième ligne"
                        attendu
                        0
                    2. Salut Teedee.

                      Oui j'ai résolu mon problème il y a un bout de temps.

                      Ma solution : passer à la ligne dans le code :
                      <textarea name="bla">coucou première ligne
                      deuxlième ligne</textarea>

                      J'éspère avoir été clair.

                      a+++
                      0
                      1. Bah moi pour l'instant je triche car ma donnée provient d'un xml, et j'ai fait comme toi, j'ai mis le saut à la ligne en dur :

                        <value><![CDATA[123 bis rue Dujardin
                        75001 PARIS]]></value>

                        En lui passant ça, le textarea remet tout seul un saut de ligne, mais le problème se posera quand je devrais mettre à jour le value par javascript ou php...
                        Mais donc ta solution ne me convient pas :)
                        merci de ta réactivité cependant
                        0
                    3. Re.

                      Ouai j'utilise cette solution mais moi aussi je pense que c'est du "bricolage".
                      Si tu trouve une soluce mieux, poste la !!

                      a+++
                      0
                      1. Ca marche impec !!!

                        Ca fait plaisir de voir un vieux sujet revenir à la surface ! Et avec succès !!!

                        Merci à tous ! Fini le bricolage !

                        a+++
                        0