Bonjour à tous !
Etant nouvelle dans le monde de javascript, j'ai essayé de mettre dans une première une liste déroulante les champs de mes tables, puis, de faire apparaitre dans une deuxième liste toutes les valeurs correspondantes à ce champs lorsque la sélection de la première change mais sans grand succès...
Grâce à mon code, j'ai réussi à récuperer tout les champs dans la première liste, mais lors du changement de sa valeur, aucune autre liste déroulante n'apparait
Je vous montre donc mon code en espérant que vous pourrez m'aider :
puis mon fichier 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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 <?php echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); ?> <html xml:lang="fr" > <head> <script type="text/javascript" src="./arrayPHP2JS.js" charset="iso_8859-1"></script> <script type="text/javascript" src="./changeValeur.js" charset="iso_8859-1"></script> <title> Base de données ARECOFA </title> </title> <br/><br/><u><font size=+50 color=seagreen> <center> Test : </center></font></u> <br/><br/><br/><br/> <?php $link=mysql_connect("localhost", "root", "") OR die('Erreur de connexion'); mysql_select_db("arecofa"); $req=mysql_query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='produit' or TABLE_NAME='fabricant'") or die ("requete impossible"); $champs=array(); while ($row = mysql_fetch_array($req)) {//echo "colonne : $row[0] <br/>"; if ($row[0] != "num_fabricant" and $row[0] != "num_de_produit" and $row[0] != "photo") {$recherche=mysql_query("select $row[0] from produit, fabricant "); $id = 0; $temoin_t=0; $temoin=array(); //echo "champs : <br/>"; while($ligne = mysql_fetch_assoc($recherche)) {$p = $row[0]; $v = $ligne[$row[0]]; //echo "$v <br/>"; $b=0; foreach ($temoin as $cle => $val) {if ($val == $v) {$b=1; } } if ( $b==0 and $temoin_t==0) {$champs[$p]=array(); $champs[$p][0]=$row[0]; $champs[$p][1] = array(); $champs[$p][2] = array(); $temoin_t=1; } if ($b==0) {$champs[$p][1][$id] = $v; $champs[$p][2][$id] = $ligne[$row[0]]; $id++; $temoin[] = $v; } } } } $chaine = htmlspecialchars(serialize($champs), ENT_QUOTES); ?> <script type="text/javascript"> /* <![CDATA[ */ <!-- /* * Ici, on transmets la chaîne sérialisée à JavaScript * pour la transformer en tableau indexé JavaScript */ var tableau = new PhpArray2Js('<?php echo $chaine; ?>'); var tab = tableau.retour(); // --> /* ]]> */ </script> </head> <body style="background:lightgreen" link=darkgreen vlink=green> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgprod"> <legend>Sélectionnez un champs</legend> <select name="champs" id="champs" onchange="changeValeur(tab,this.value);"> <option value="vide">- - - Choisissez un champs - - -</option> <?php /* Construction de la première liste : on se sert du tableau PHP */ $nbr = count($champs); foreach($champs as $nr => $nom) { ?> <option value="<?php echo($nr); ?>"><?php echo($nr); ?></option> <?php } ?> </select> <span id="blocValeur"></span><br /> <input type="submit" name="ok" id="ok" value="Envoyer" /> </form> </body> </html>
Merci à ceux qui sont arrivé à me lire jusqu'ici, si vous avez des réponses...
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 /* On crée la fonction qui va construire la seconde liste déroulante */ function changeValeur(tab, champs) {if(champs != "vide") {var nbd = tab[champs][1].length; var form_d = '<select name="valeur" id="nom_valeur">'; form_d += '<option value="vide">- - - Choisissez une valeur - - -</option>'; for(var j = 0; j < nbd; j++) {if (tab[champs][1][j] != undefined) {form_d += ' <option value="'+ tab[champs][1][j] +'">'+ tab[champs][2][j] +'<\/option>'; } } form_d += '<\/select>'; } else { form_d = ""; } document.getElementById("blocValeur").innerHTML = form_d; }
Partager