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. #21
    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
    fait voir ton code pour rappel

  2. #22
    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
    Alors voici la requète sql, qui alimente ma liste déroulante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql  = " select *, tache_id as id, tache_nom as label ";
    $sql .= " from k2prjtache LEFT JOIN k2users ON tache_developpeur_assigne = usrid";
    $sql .= " order by label";
    Voici le javascript :

    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
     
    function charge_form(objet)
    {
     
    	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_rem').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];
     
            }        
    	}
     
    }
    Puis voici le formulaire html :

    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
     
    <table border=0>
        <tr>
            <td>
                <table>
                <tr><td>Nom de la tache : 
                    <td><select size=1 name=tache_nom id=tache_nom onchange="charge_form(this)">                
                    $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="">                               
                    </textarea></td></tr>
                <tr><td>Date : 
                    <td><input type=text name=tache_date id=tache_date value=""> 
                    </td></tr>                                    
                <tr><td>Temps :
                    <td><input type=text name=tache_temps id=tache_temps value="">
                    </td></tr>
                <tr><td>Personne assignée :
                    <td><input type=text name=tache_developpeur_assigne id=tache_developpeur_assigne value="">
                    </td></tr>
                <tr><td>Statut :
                    <td>$statut
                    </td></tr>   
                </table>
                <br />
     
                <br /><br />
                <input type=submit value='enregistrer'>
            </td>
     
        </tr>
        </table>
        </form>

  3. #23
    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
    Le objet.value d'un select retourne la donnée stocké dans le value du option sélectionné et non pas un tableau de valeur !
    Donc déjà quand tu fais un "for in" c'est déjà faux car ce n'est pas les bonnes valeurs.
    Et pour chaque "i" du "for in", tu vas écraser les valeurs de tous tes input, donc c'est à nouveau faux.

    Il faudrait donc récupérer les options du select et afficher leur value ou bien leur text (suffit de faire tabvaleur[i].text).

    Dans tous les cas, je ne comprends vraiment pas ce que tu cherches à faire sachant que ta requete ne retourne pas les données dont on a besoin.

    De plus tu ne nous donne pas tout le code, ce qui m'interesserait c'est comment tu génères l'affichage de ton select avec ton php.

    Un petit conseil, essai déjà d'afficher toutes les données correctement dans ton select avant de faire ton javascript. Il faut savoir marcher avant de savoir courrir

  4. #24
    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
    ben pourtant pour faire mon select j'utilise cette requète et ensuite je crée une liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tache_nom = ConstruireSelect($sql,'selectionner','','');
    et cela m'affiche bien ce que je veux dans ma liste a savoir des noms de taches.

    Si tu veux voici le code du construireSelect :
    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
     
    function ConstruireSelect($sql,$deflabel,$defval,$curval)
    {
        // Construit le code d'un select à partir d'une requété SQL devant renvoyer ID et LABEL en colonnes. 
        // Active l'enregistrement ou ID=$curval
        $Q=dbiDoBD($sql);
        $liste="";
        if ($deflabel != "") $liste = "<OPTION VALUE='".$defval."'>".$deflabel;
        while ($R = dbiFetch($Q))  
            {
            $R[id]==$curval ? $ACTIVE=" SELECTED" : $ACTIVE="";
            $liste .= "<OPTION VALUE='".formConvert($R[id])."'$ACTIVE>".$R[label];
            }
        return $liste;
    }
    En fait ce qu'il faut faire c'est récupérer l'id la tache selectionné dans la liste et afficher les renseignements liés à cet id.Je pense que c'est comme cela qu'il faut procéder.Non?

  5. #25
    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
    Si tu veux faire comme ça...

    Il te faut utiliser de l'ajax !

    Tu récupères l'id, tu fais une requete ajax qui te retourne les valeurs à afficher dans tes input

  6. #26
    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
    hmmmmmm.

    Et toi tu ferais comment ?


    edit : A j'ai oublié de dire que les value de mes option c'était les id de ce qu'il y a
    dans mon select.

  7. #27
    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
    Tout dépend de combien tu risques d'avoir de ligne dans ton select. S'il y en a peu, tu peux sérialiser les données dans le value, sinon ajax obligatoire.

    Peu pour moi c'est une vingtaine maxi

  8. #28
    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
    Ben je pense qu'il y en aura plus de 20. Donc cela veut dire ajax forcément.

  9. #29
    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
    Bon j'ai essayé de me mettre à l'ajax mais c'est pas simple.
    Voici ce que j'ai déjà :
    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
     
    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);
        }
    et l'appel c'est toujours pareil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <select size=1 name=tache_nom id=tache_nom " onchange(this)>                
                    $tache_nom
                    </select>
    Mais grrrrr. C'est toujours pas bon.

  10. #30
    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
    Oui je pense que c'est le mieux. Si tu ne connais pas je te conseille de suivre un tuto la dessus il y en a pas mal sur le net

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