Affichage dans champs selon choix liste déroulante sans bouton

kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011 - 4 avril 2008 à 16:28
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 10 avril 2008 à 08:13
Bonjour

j'ai réalisé un petit formulaire dans lequel j'ai une petite liste déoulante.
Lorsque l'utilisateur sélectionne un choix dans la liste, tous les renseignements liés à ce choix dans la base de donnée s'affiche dans des champs prévus à cet effet.
Mais mon problème c'est que cela ne fonctionne pas. Rien ne se passe.

Voici mon code :

$sql2 = "Select * from k2prjtache ";
    $Q2 = mysql_query($sql2);
    if (! $Q2 ) DbError($sql2);
    $R2 = mysql_fetch_array($Q2);

<form method=post action='$_SERVER[PHP_SELF]' name=form_superviseur id=form_superviseur>
   
   
   
   
   
   

        ----

                    <table>
            ----, Nom de la tache :
                <select size=1 name=tache_nom id=tache_nom onchange="document.getElementById('form_superviseur');">               
                $tache_nom
                </select>,
            ----
Description :
               , <textarea name=tache_description id=tache_description value=\"$R2[tache_description]\">                              
                </textarea></td>
            ----
Etat de la tache :
               ,
                </td>
            ----
Commentaire :
               , <textarea name=tache_rem id=tache_rem value=\"$R2[tache_rem]\">                              
                </textarea></td>
            ----
Date :
               ,
                </td>                                   
            ----
Temps :
               ,
                </td>
            ----
Personne assignée :
               ,
                </td>
            ----
Statut :
               , $statut
                </td>  
           

           

           

           
        </td>
       
    </tr>
    </table>
    </form>

Savez-vous d'où cela peut venir?

Merci d'avance.
olivier

14 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 avril 2008 à 10:41
Bonjour,

>>onchange="document.getElementById('form_superviseur');"
    ça, à part "rechercher" l'ID  'form_superviseur', ça ne fait rien.
>>les choses comme $R2[tache_description]...
    doivent être dans un echo coté php, non ?
    sinon, ça ne donnera rien, mais dans ce cas tu dois avoir
       des soucis avec les " et les ' ....
>>ça ne fonctionne pas...
    peut-être y a-t-il d'autres choses, mais réglons d'abord les 2 1ers points

    et si tu nous postes quelque chose, met nous la page html résultatnte
    ( enfin... UN PETIT EXTRAIT, ce qu'il faut mais pas plus )
    sinon  comment on devine le contenu des $variables php,
       de la base de données.... hein ?

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
7 avril 2008 à 10:51
salut,

merci pour ta réponse. Pour les <?php echo, ce qui est bien c'est que j'ai pas besoin de les mettre car gràce à une petite instruction. Donc au niveau des guillemets je pense qu'il n'y a pas de souci.

Pour le onchange, je dois rajouter quelque chose?  Sinon pour la page html résultante i c'est une copie d'écran que tu veux ?
Car ben c'est un formulaire avec une liste déroulante dont le contenu est dans $tache_nom.

Et ben les autres éléments sont vide tant qu'il n' y a rien de sélectionner dans la liste déroulante. Mais dans mon exemple même si un élément est sélectionné, tout ce qui y est rattaché n'est pas affiché  dans les différents champs.
Voilà. J'espère que c'est ce que tu voulais.
Encore merci

        olivier
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 avril 2008 à 11:20
>>Pour le onchange, je dois rajouter quelque chose?
    ben... ce que tu veux y faire !
    pour l'instant tu y fais : onchange="document.getElementById('form_superviseur');"
       et qu'est-ce que ça fait ça ? rien !

>> Sinon pour la page html résultante i c'est une copie d'écran que tu veux ?
    ben non....
    tu exécutes ton php, une page s'affiche sur le micro,
       la copie que tu nous met ici je pense,
       visualises la source, IE : Affichage / Source,  FF Affichage / Code Source...
          tu l'as dans un éditeur de texte, sauvegarde, fais en UN PETIT EXTRAIT,
          tout ce qu'il faut MAIS pas plus.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
7 avril 2008 à 11:38
Ah d'accord.

Voilà le code html que j'ai récupéré sous  firefox :

<form method="post" action="/k2/start.php3" name="form_superviseur" id="form_superviseur">
<input name="Action" value="tch" type="hidden">
<input name="Etape" value="validerSuiviSuperviseur" type="hidden">
<input name="prj_id" value="" type="hidden">
<input name="tache_prj_id" value="" type="hidden">
<input name="tache_usr_id" value="" type="hidden">

<input name="tache_id" value="2" type="hidden">

<table border="0">
<tbody><tr>
<td>
<table>
<tbody><tr><td>Nom de la tache :
</td><td><select size="1" name="tache_nom" id="tache_nom" onchange="document.getElementById('form_superviseur')">
<option value="">selectionner</option><option value="2"></option><option value="3"></option><option value="10945"></option><option value="5">drag&amp;drop</option><option value="4">intranet
</option></select></td></tr>

<tr><td>Description :
</td><td><textarea name="tache_description" id="tache_description" value="">
</textarea></td></tr>
<tr><td>Etat de la tache :
</td><td><input name="tache_etat" id="tache_etat" value="" type="text">
</td></tr>
<tr><td>Commentaire :
</td><td><textarea name="tache_rem" id="tache_rem" value="">
</textarea></td></tr>
<tr><td>Date :
</td><td><input name="tache_date" id="tache_date" value="" type="text">
</td></tr>
<tr><td>Temps :
</td><td><input name="tache_temps" id="tache_temps" value="" type="text">

</td></tr>
<tr><td>Personne assignée :
</td><td><input name="tache_developpeur_assigne" id="tache_developpeur_assigne" value="" type="text">
</td></tr>
<tr><td>Statut :
</td><td><select name="tache_statut">
<option value=""></option>
<option value="non valider" selected="selected">non valider</option>
<option value="valider">valider</option>
</select>

olivier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 avril 2008 à 11:56
c'est mieux....            et, je me cite ? :
>>Pour le onchange, je dois rajouter quelque chose ?
    ben... ce que tu veux y faire !
    pour l'instant tu y fais : ...onchange="document.getElementById('form_superviseur');"...
       et qu'est-ce que ça fait ça ? rien !
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
7 avril 2008 à 12:18
ben il est la problème. Je sais qu'à la sélection d'un élément de ma liste cela affiche les infos dans mon formulaire.

J'ai donc essayé cela : onchange="document.getElementById('form_superviseur').selectedIndex;"

mais cela ne change rien non plus. Est-ce que c'est quand même juste? Sinon je sais pas trop quoi mettre d'autre. Et dois-je mettre quelque chose aussi dans  mes différents champs autre que le $R[nom]

olivier
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 avril 2008 à 12:46
>>onchange="document.getElementById('form_superviseur').selectedIndex;"
>>mais cela ne change rien non plus.

    ben oui....    tu ne fais toujours rien....
        document.getElementById('form_superviseur').selectedIndex;
            ça doit donner le n° de ligne de l'option sélectionnée... rien de plus.
            mais qu'en fais-tu ? rien !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
7 avril 2008 à 16:29
pour t'aiguiller... un peu...
        en simplifiant :
           
            et tu fais document.getElementById(""ex").value
        certes... mais tu en fais quoi ce ce .value ? rien ! donc rien ne se passe.
    si tu faisais je_ne_sais_pas_quoi=document.getElementById(""ex").value;
       et après cette ligne je_ne_sais_pas_quoi vaudrait "toto".
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
7 avril 2008 à 16:58
J'ai fais cela maintenant :

function charge_form()
  {

          tache_developpeur_assigne = document.getElementById("tache_nom").value;
          tache_description = document.getElementById("tache_nom").value;
          tache_temps = document.getElementById("tache_nom").value;
          tache_date = document.getElementById("tache_nom").value;
          tache_rem = document.getElementById("tache_nom").value;
   
  }

<form method=post action='$_SERVER[PHP_SELF]' name=form_superviseur id=form_superviseur >
   
   
   
   

        ----

                    <table>
            ----, Nom de la tache :
                <select size=1 name=tache_nom id=tache_nom onchange="charge_form()">               
                $tache_nom
                </select>,
            ----
Description :
               , <textarea name=tache_description value=\"$R[tache_description]\">                              
                </textarea></td>
            ----
Etat de la tache :
               ,
                </td>
            ----
Commentaire :
               , <textarea name=tache_rem id=tache_rem value=\"$R[tache_rem]\">                              
                </textarea></td>
            ----
Date :
               ,
                </td>                                   
            ----
Temps :
               ,
                </td>
            ----
Personne assignée :
               ,
                </td>
            ----
Statut :
               , $statut
                </td>  
           

           

           

           
        </td>
       
    </tr>
    </table>
    </form>

Je pense que je m'en rapproche, mais pour les données dans la base je fais comment?

olivier
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 avril 2008 à 08:17
>>mais pour les données dans la base je fais comment?
    ??
    les afficher ? tu le fais en php ( sauf ereur ? )
    les mettre à jour ?   transfert formulaire ==> script php; qui le fera
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
8 avril 2008 à 15:56
salut,

là je dois avouer que je galère à fond.

Sinon ce qui m'embête c'est que en mettant le $R dans le value de mon champs,

il s'affiche dès le départ même si aucune valeur n'est sélectionner. De
plus j'ai une erreur javascript généré par firebug à chaque fois que je
clique sur un choix de ma liste déroulante :
<!-- BEGIN TEMPLATE: bbcode_quote -->






object is not defined

onchange(change )

ci-dessous le code ma fonction.

function charge_form(object)
  {
 
    if(objet.value)
    {
        var tabvaleur = objet.value;
        for (var i in tabvaleur)
        {

          document.getElementById('tache_description').value = tabvaleur[i];
          document.getElementById('tache_etat').value = tabvaleur[i];
          document.getElementById('tache_remarque').value = tabvaleur[i];
          document.getElementById('tache_date').value = tabvaleur[i];
          document.getElementById('tache_temps').value = tabvaleur[i];
          document.getElementById('tache_developpeur_assigne').value = tabvaleur[i];
        }       
    }
  }

et voilà l'appel :

td><select size=1 name=tache_nom id=tache_nom onchange="charge_form(object)">               
                $tache_nom
                </select></td></tr>

Si tu peux me donner la solution finale ce serait super car là, je comprends pas ou plus. Je me perds pour afficher ces données.

olivier
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 avril 2008 à 16:18
      $tache_nom               c'est quoi ?
     charge_form(object)   c'est quoi object ?

je n'ai pas vérifié, mais coté client (javascript.. ) , ce n'est probablement pas loin.
maintenant il faut communiquer avec le PHP, et la base.

cette page, que nous montre, est générée par le php,
       c'est de ce coté là qu'il faut afficher le contenu de la base

après il faudra retourner un formulaire vers le php,
       pour que tu puisses mettre à jour la base.

>>Si tu peux me donner la solution finale
    je pense que tu vas être capable de le faire...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
kifouillou Messages postés 170 Date d'inscription mardi 27 septembre 2005 Statut Membre Dernière intervention 28 janvier 2011
9 avril 2008 à 16:32
Salut,

Bon je me complique plus la tache. J'ai décidé de faire du ajax. On ma dit que si j'avais beaucoup d'éléments dans ma liste déroulante c'était mieux.

J'ai essayé un truc du genre :

function charge_form(param)
    {
        if(document.all)
        {
            //Internet Explorer
            var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
        }
        else
        {
            //Mozilla
            var XhrObj = new XMLHttpRequest();
        }

       
        var content = document.getElementById("tache_description");
        var content2 = document.getElementById("tache_temps");
        var content3 = document.getElementById("tache_date");
        var content4 = document.getElementById("tache_rem");
        var content5 = document.getElementById("tache_developpeur_assigne");
 
        XhrObj.onreadystatechange = function()
        {            if (XhrObj.readyState 4 && XhrObj.status 200)
                content.value = XhrObj.responseText ;
                content2.value = XhrObj.responseText ;
                content3.value = XhrObj.responseText ;
                content4.value = XhrObj.responseText ;
                content5.value = XhrObj.responseText ;
        }

        XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        XhrObj.send(param);
    }

Mais hélas cela ne fonctionne toujours pas. Si tu as une petite idée.

olivier
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 avril 2008 à 08:13
>>on je me complique plus la tache.
    pas trop... mais un peu quand même,
       comme le problème n'est pas là, tu ne fais qu'en rajouter quoi...
>>Mais hélas cela ne fonctionne toujours pas.
    si tu n'as rien changé d'autres, pas rectifié ce dont je te parlais....
       c'est normal.
    tu changes de "technologie" sans modifier l'essentiel : ce qui ne fonctionne pas.
       relis ce que je te disais.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0