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 :

Liste déroulante imbriquée importée depuis une Bdd


Sujet :

JavaScript

  1. #21
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Si si c'est possible, j'ai moi même lié une liste déroulante avec une autre liste, à partir des informations d'une même table .

    Dans ma table j'avais 3 paramètres (id, nom, type). J'ai réussi à lier ma liste type avec ma liste nom. C'est à dire que lorsque je sélectionne un type dans ma première liste, j'ai dans ma seconde liste, la liste des noms pour ce type qui s'affiche. Je ne sais pas si c'est ça que tu veux réaliser ?

    En fait pour réaliser cela, j'ai pas mal bidouiller, je passe par un String avec des séparateurs pour lister mes noms appartenant à mon type. Et dans une fonction javascript, je sélectionne les bon noms pour mon type choisis. Puis j'efface et remplis ma seconde liste déroulante.

  2. #22
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    C'est exactement ce que je veux faire.

    En fait, j'ai completement changé mon code et utilisé uniquement du js. Ca me donne ca maintenant :

    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
    <script langage="JavaScript">
    function Choix(form){
    i = form.Glob.selectedIndex;
    if (i==0){
    	return;
    	}
    <?php
     
    /*
    Code pour recuperer la 2eme liste
    */
     
            ?>
     
    switch (i){
    case 1 : var txt = new Array ('collecte','support','av','supervision'); break;
    case 2 : var txt = new Array ('type X75','ATM','FR','VOIP'); break;
    case 3 : var txt = new Array ('degradation','inaccessibilité',' ',' '); break;
    case 4 : var txt = new Array ('Divers',' ',' '); break;
    case 5 : var txt = new Array ('Tel','Adr ',' ',' '); break;
    case 6 : var txt = new Array ('clients','fournisseurs','administratif','compta'); break;
    }
    form.Type.selectedIndex = 0 ;
     
    for(i=0;i<4;i++) {
    	form.Type.options[i+1].text=txt[i];
    	}
    }
    </script>
    	<form>
    			<fieldset style="width: 500px">
    			<legend>Liste liées</legend>
    			<label>Materiel</label>
    			<select name="Glob" onChange='Choix(this.form)'>
    			<option>-Choix --</option>
    			<? $res = mysql_query("SELECT DISTINCT global_mat FROM tableau_recap");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["global_mat"]."'>".$row["global_mat"]."</option>";
    						}
    			?>
    			</select>
     
    			<label>Type</label>			
    			<select name="Type">
    			<option>Type</option>
    			<option></option>
    			<option></option>	
    			<option></option>
    			<option></option>
    			</select>
    		</fieldset>
    	</form>
    Pour l'instant les informations pour la deuxieme liste sont coder en dur dans le prog, théoriquement ( ) il ne me reste plus qu'a faire un select a ce niveau pour choisir les champs.
    Ca donnerait un truc du style "SELECT type from tableau_recap where global_mat=".$_POST["global"]."ORDER BY 1");
    Enfin , c'est comme ca que j'essaye en tout cas.

    Mais je serais curieux de savoir comment tu as fait pour t'envsortir de ton coté.

    Merci en tout cas de ta réponse.

  3. #23
    Membre habitué Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par WhyMee
    Mais je serais curieux de savoir comment tu as fait pour t'envsortir de ton coté.
    Voila un peu plus d'explication (pas évident à expliquer ) :

    1) Dans mon fichier Action, je récupère la liste de données de mes tables dans un Vector. Ensuite je récupère la liste des types entités et les stocke dans une variable. Avant de finir par une double boucle pour pouvoir parcourir à la fois mon Vector et ma liste des types. A partir de là, je stocke dans un String les noms pour chaque type au moyen de séparateurs (& pour séparer les noms et $ pour séparer les groupes de noms appartenant à un type).

    2) Dans ma page JSP, dans mon onchange de ma liste déroulante de type, j'appelle une fonction javascript. Cette dernière récupère le String comportant la liste des noms, et elle va effacer la seconde liste déroulante pour la remplir avec les nouveaux noms correspondant à mon type sélectionné.

    Voili voilou

  4. #24
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par bouchette63
    Voila un peu plus d'explication (pas évident à expliquer ) :
    Pas évident non plus à comprendre. Je vois a peu près ton cheminement, mais je n'essayerais pas limité que je suis par mon niveau

    Merci en tout cas de tes explications, je vais continuer à me pendre la tête de mon coté.

  5. #25
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Comment ca j'insiste ?

    Bon y a du mieux, mais c'est pas encore ça, j'en suis arrivé là :

    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
    <table><tr>
    <script langage="JavaScript">
    function Choix(form){
    i = form.Glob.selectedIndex;
    if (i==0){
     
    	return;
    	}
    <?php
     
    $res1 = mysql_query("SELECT DISTINCT global_mat FROM tableau_recap");
                                                    while($row1 = mysql_fetch_assoc($res1)){
            $sel=mysql_query("SELECT DISTINCT type FROM tableau_recap where global_mat=".$row1["global_mat"]."ORDER BY 1"); 
                                                            while($sel1=mysql_fetch_assoc($sel)){
                                                            $cp++;
                                                            echo "<option value='".$sel1["type"]."'>".$sel1["type"]."</option>";
                                                            
                                                            }
                                                    }
     
     
    ?>
     
    form.Type.selectedIndex = 0 ;
     
    for(i=0;i<cp;i++) {
    	form.Type.options[i+1].text=txt[i];
    	}
    }
    </script>
    	<form>
    			<fieldset style="width: 500px">
    			<legend>Liste liées</legend>
    			<label>Materiel</label>
    			<select name="Glob" onChange='Choix(this.form)'>
    			<option>-Choix --</option>
    			<? $res = mysql_query("SELECT DISTINCT global_mat FROM tableau_recap");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["global_mat"]."'>".$row["global_mat"]."</option>";
    						}
    			?>
    			</select>
     
    			<label>Type</label>			
    			<select name="Type">
    			<option>--Choix--</option>
    			<option></option>
    			<option></option>	
    			<option></option>
    			<option></option>
    			</select>
    		</fieldset>
    	</form>
    </tr></table>
    Donc j'aurais deux, trois petites questions...car pour l'instant mon script ne charge pas la deuxieme liste.

    Ma deuxieme liste en bas du code a t'elle encore lieu d'être a cette place ?
    Ne devrais je pas plutot la mettre dans mon script ? (ca me paraitrait bizare mais pourquoi pas..)

    Bref, y aurait il une âme charitable pour me dire ou j'ai raté quelque chose ?


    edit: j'avais ^c une mauvaise version où je n'avais pas modifier le nom des variables row et res que l'on trouvait deux fois et donc le problème ne vient pas de là.

  6. #26
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Ne m'en sortant pas, je me permets d'uper ma question.

  7. #27
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Salut !
    je te conseille de lire ce topic peut etre que ca pourra t'aider...
    http://www.developpez.net/forums/sho...d.php?t=176464

    Cdlt
    sKn

  8. #28
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Problème résolu.

    J'ai utilisé un tableau pour stocker le résultat de mes requetes.
    L'idée ne vient pas de moi (toutes les corrections non plus d'ailleurs) mais une fois qu'on vous l'a soufflé ca parait évident.

    Je repost mon code s'il y peut servir a quelqu'un et lui eviter de perdre autant de cheveux que moi

    Merci à tous pour les conseils prodigués.

    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
    57
    58
    <script langage="JavaScript">
    function Choix(form){
    var txt=new Array();
    var txt_nb=new Array();
     
    i = form.Glob.selectedIndex;
    if (i==0){
    	return;
    	}
    <?php
     
    $res1 = mysql_query("SELECT DISTINCT global_mat FROM tableau_recap");
    $cpt_glob=0;
    while($row1 = mysql_fetch_assoc($res1)){
            $cpt_glob++;
            $sel = mysql_query("SELECT DISTINCT type_pb FROM tableau_recap where global_mat='".$row1["global_mat"]."' ORDER BY 1") or die(mysql_error());
            $cp=0;
            while($sel1 = mysql_fetch_assoc($sel)){
                    $cp++;
                    if ($cp==1) echo "txt[".$cpt_glob."]=new Array();";
                    echo "txt[".$cpt_glob."][".$cp."]='".$sel1["type_pb"]."';";
                    #echo "<option value='".$sel1["type_pb"]."'>".$sel1["type_pb"]."</option>";     
            }
            echo "txt_nb[".$cpt_glob."]=".$cp.";";
    }
     
     
    ?>
     
    form.Type.options.length = 0;
    form.Type.selectedIndex = 0 ;
     
    form.Type.options[0]=new Option("--Choix--",0);
    for(c=1;c<=txt_nb[i];c++) {
    	form.Type.options[c]=new Option(txt[i][c],c);
    	}
    }
    </script>
    	<form>
    		<fieldset style="width: 800px">
    			<legend>Liste liées</legend>
    			<label>Materiel</label>
    			<select name="Glob" onChange='Choix(this.form)'>  
    			<option>--Choix --</option>
    			<? $res = mysql_query("SELECT DISTINCT global_mat FROM tableau_recap");
    						while($row = mysql_fetch_assoc($res)){
    							echo "<option value='".$row["global_mat"]."'>".$row["global_mat"]."</option>";
    						}
    			?>
    			</select>
     
    			<label>Type</label>			
    			<select name="Type">
    			<option>--Choix--</option>
    			</select>
    		</fieldset>
    	</form>
    </tr></table>

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2008, 14h20
  2. Liste déroulante + chargement partiel d'une page
    Par lamelfa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/09/2006, 22h29
  3. Réponses: 5
    Dernier message: 12/06/2006, 10h27
  4. Réponses: 6
    Dernier message: 15/12/2005, 21h20
  5. Import d'une bdd éloquence avec interbase ou postgresql?
    Par Missvan dans le forum InterBase
    Réponses: 11
    Dernier message: 06/01/2004, 21h44

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