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

JavaScript Discussion :

mise à jour de champs en fonction d'une liste déroulante


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut mise à jour de champs en fonction d'une liste déroulante
    bonjour,

    j'ai réalisé un petit formulaire contenant une liste déroulante ainsi que plusieurs champs.

    Lorsque je sélectionne un élément de la liste déroulante, il faudrait que s'affiche dans mes autres champs les infos correspondantes de la base de données.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    $sql  = " select *, tache_id as id, tache_nom as label "; $sql .= " from k2prjtache LEFT JOIN k2users ON tache_developpeur_assigne = usrid";
    $sql .= " WHERE 1=1 " ;
    $sql .= " order by label";
    $Q = mysql_query($sql);
    if (! $Q ) DbError($sql);
    $R = mysql_fetch_array($Q);
     
    <form method=post action='$_SERVER[PHP_SELF]' name=form_superviseur id=form_superviseur>
        <input type=hidden name=Action value="tch">
        <input type=hidden name=Etape value="validerSuiviSuperviseur">
        <input type=hidden name=prj_id value="$id">
        <input type=hidden name=tache_prj_id value="$id">
        <input type=hidden name=tache_usr_id value="$usr_id">
        <input type=hidden name=tache_id value="$R[tache_id]">
     
        <table border=0>
        <tr>
            <td>
                <table>
                <tr><td>Nom de la tache : 
                    <td><select size=1 name=tache_nom id=tache_nom onchange="document.getElementById('tache_nom').options[document.getElementById('tache_nom').selectedIndex].text;">                
                    $tache_nom
                    </select></td></tr>
                <tr><td>Description : 
                    <td><textarea name=tache_description id=tache_description value="">                               
                    </textarea></td></tr>
                <tr><td>Etat de la tache : 
                    <td><input type=text name=tache_etat id=tache_etat value="$R[tache_etat]"> 
                    </td></tr> 
                <tr><td>Commentaire : 
                    <td><textarea name=tache_rem id=tache_rem value="$R[tache_rem]">                               
                    </textarea></td></tr>
                <tr><td>Date : 
                    <td><input type=text name=tache_date id=tache_date value="$R[tache_date]"> 
                    </td></tr>                                    
                <tr><td>Temps :
                    <td><input type=text name=tache_temps id=tache_temps value="$R[tache_description]">
                    </td></tr>
                <tr><td>Personne assignée :
                    <td><input type=text name=tache_developpeur_assigne id=tache_developpeur_assigne value="$R[nom]">
                    </td></tr>
                <tr><td>Statut :
                    <td>$statut
                    </td></tr>   
                </table>
                <br />
     
                <br /><br />
                <input type=submit value='enregistrer'>
            </td>
     
        </tr>
        </table>
        </form>
    Je pense que je dois rajouter quelque chose dans le value de chaque champs mais en fait je ne sais pas quoi. Car là ce que je fais dans mon select je ne fais juste que récupérer quelque chose mais je n'en fais rien.Avez-vous une petite idée.

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Il est bizarre ton code. Pas de balises ouvrante fermante pour le php

    Tu peux sérialiser les infos dans le value et après le récupérer en faisant un split lors de l'évènement "onchange" de ta balise select.

  3. #3
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    ouep, pour les balises fermantes et ouvrantes c'est normal. Une instruction me permet de ne pas les mettre.

    Par contre je n'ai pas trop compris l'instruction que tu me conseillais. Pourrais tu me donner un petit exemple s'il te plait?

    Merci d'avance.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Tu peux faire ce genre de chose :

    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
    18
    19
    20
    21
    22
    23
    <script>
      function charge_form(objet)
      {
    	if(objet.value)
    	{
    	    var tabvaleur = objet.value.split('&');
    	    for (var i in tabvaleur)
    	    {
    	      document.getElementById('inp'+(1 + parseInt(i))).value = tabvaleur[i];
    	    }
    	}
      }
    </script>
     
    <select onchange="charge_form(this);">
      <option value="">(rien)</option>
      <option value="valeur1&valeur2&valeur3">Mon premier option</option>
      <option value="valeur4&valeur5&valeur6">Mon second option</option>
    </select><br />
    <br />
    Input1 <input id="inp1" value="" /><br />
    Input2 <input id="inp2" value="" /><br />
    Input3 <input id="inp3" value="" />

  5. #5
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Comme mes champs ne sont pas du type nom+chiffre mais que des noms différents n'y a t'il pas moyen d'appliquer cela à tout le formulaire. En tout cas j'ai testé cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('form_superviseur').value = tabvaleur[i]
    Mais cela ne fait rien du tout. Car mes nom de champs c'est tache_descrition, tache_no,tache_rem,...

    Merci encore.

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    formulaire.elements[nomduChamp]
    ...

  7. #7
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    hmmm donc si je te suis bien, il faut que j'en fasse un pour chaque champ, ce qui donnerait cela :
    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
     
    function charge_form(objet)
      {
    	if(objet.value)
    	{
    	    var tabvaleur = objet.value;
    	    for (var i in tabvaleur)
    	    {
    	      document.getElementById('form_superviseur.elements[tache_rem]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_description]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_date]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_temps]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_etat]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_developpeur_assigne]').value = tabvaleur[i];
    	    }
    	}
      }
    Est-ce bien cela ?

  8. #8
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    document.getElementById('form_superviseur').elements[tache_rem].value = tabvaleur[i];
    document.forms['form_superviseur'].elements[tache_rem].value = tabvaleur[i];
    document.form_superviseur.elements[tache_rem].value = tabvaleur[i];

    ou eval("chainedecaractere")
    ou ajax...
    je ne sais pas ce qu'il y a dans tes options. c'est juste une indication

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Citation Envoyé par kifouillou Voir le message
    hmmm donc si je te suis bien, il faut que j'en fasse un pour chaque champ, ce qui donnerait cela :
    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
     
    function charge_form(objet)
      {
    	if(objet.value)
    	{
    	    var tabvaleur = objet.value;
    	    for (var i in tabvaleur)
    	    {
    	      document.getElementById('form_superviseur.elements[tache_rem]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_description]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_date]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_temps]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_etat]').value = tabvaleur[i];
    	      document.getElementById('form_superviseur.elements[tache_developpeur_assigne]').value = tabvaleur[i];
    	    }
    	}
      }
    Est-ce bien cela ?
    Oula non. Ca ne risque pas de marcher.

    document.getElementById() te permet d'accéder à un objet par son id n'importe ou dans la page hors tu lui indique quelquechose qui n'est pas un id.

    Soit tu fais (si c'est bien un id) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('tache_developpeur_assigne')...
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.form_superviseur.elements['tache_developpeur_assigne']...

  10. #10
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    salut,

    Merci à toi.Bon c'est effectivement des id, décidément je manque de rigueur là.
    Donc j'ai bien fais :
    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
    18
    19
     
    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];
            }
    	}
      }

    Mais avant j'avais mes $R['taches'] pour afficher les données de ma table. Comme les value de mes input sont à vide je les mets où mes $R? Je pense que c'est un truc super facile mais je crois que là je suis un peu trop dans les choux et fatigué surtout.

    Merci encore et toujours

  11. #11
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Il y a quelques erreurs :

    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
     
    function charge_form(objet)
      {
    	if(objet.value)
    	{
    	    var tabvaleur = objet.value.split(',');
    	    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];
            }
      }
    Pour tes $R, qu'est ce qui t'empeche de charger les value au départ ?

  12. #12
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    bonjour madevilts,

    quand tu dis quelques erreurs c'est le .split(,) ? Car il n'y a aucun séparateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <td><select size=1 name=tache_nom id=tache_nom onchange="charge_form(object)">                
                    <OPTION VALUE=''>selectionner<OPTION VALUE='2'><OPTION VALUE='3'><OPTION VALUE='10945'><OPTION VALUE='10951'><OPTION VALUE='10946'><OPTION VALUE='5'>drag&drop<OPTION VALUE='4'>intranet
    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 firebub à chaque fois que je clique sur un choix de ma liste déroulante :
    object is not defined
    onchange(change )

  13. #13
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    exact. Excuse moi, j'avais rajouté le split mais j'ai pas eu le temps de marquer le reste. mais ton erreur n'est pas là.

    Les erreurs sont :
    1) il y a trop d'accolade
    2) ton appel de fonction désigne un argument 'object' alors que dans la fonction c'est 'objet'.

  14. #14
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    J'avais déjà corrigé les accolades mais merci pour les object et objet mélangés. Mais malheureusement mon problème ne devait pas venir de là car j'ai toujours la même erreur générée par firebug.

  15. #15
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Toujours avec object ?

  16. #16
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Oui, pourtant j'ai que des object cette fois, plus d'objet.

  17. #17
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    object est un nom de variable qu'il faut éviter d'utiliser. vu que c'est le nom d'un type javascript, il est surement réservé.

  18. #18
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Même avec objet il me met la même erreur.
    Toujours
    objet is not defined
    onchange(change )

  19. #19
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Sur ton onchange tu fais bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="charge_form(this);"

  20. #20
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    salut,

    Merci beaucoup,
    effectivement dans mon appel de fonction je mettais on change = charge_form(objet). Maintenant mes champs se remplissent bien. Le seul problème c'est qu'il m'affiche juste l'id dans tous les champs.Au moins il trouve la bonne ligne mais au lieu de m'afficher ce qui corresponds au champs j'ai juste l'id. Saurais tu pourquoi?

Discussions similaires

  1. Cacher un champs en fonction d'une liste déroulante
    Par mlle.asmae dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/07/2015, 19h54
  2. [11g] Mise à jour de table en fonction d'une autre
    Par bernards111 dans le forum SQL
    Réponses: 2
    Dernier message: 11/03/2013, 17h19
  3. [AC-2010] Mise à jour des champs en fonction d'une valeur
    Par mathmath99 dans le forum IHM
    Réponses: 1
    Dernier message: 21/01/2013, 14h54
  4. [AC-2007] Actualisation des champs en fonction d'une liste déroulante
    Par cool17 dans le forum IHM
    Réponses: 2
    Dernier message: 05/04/2010, 20h31
  5. [AC-2007] Mise à jour des champs (pas null) d'une table vers une autre table
    Par Daniel-Gérald dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/11/2009, 11h27

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