Liaison liste deroulante avec BDD
Bonjour,
Je vous expose mon problème:
en fait, je n'arrive pas a lié le choix d'une liste déroulante a une autre liste déroulante , les deux etant lié a des données inclus dans une base de données.
Une fonction me gène et je ne la comprend pas, se qui me bloque un peu.
la fonction en question:
Code:
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
| var gs_nth = 0;
var gs_timeout = 1600;
var gs_select = new Array();
var gs_timer = new Array();
var gs_stor = new Array();
function mk_select(nom,options,flag)
{
if (flag)
{
document.write('<SELECT id="gs_select_' + gs_nth + '" name="' + nom + '"'
+ ' style="width:100%"' + ' onkeydown="return gs_inkey(' + gs_nth
+ ')">' + options
+ '</SELECT>'
);
gs_select[gs_nth] = null;
gs_timer[gs_nth] = null;
gs_stor[gs_nth] = "";
++gs_nth;
}
else
{
document.write(options);
}
}
function gs_inkey(nth)
{
if (gs_select[nth]==null)
gs_select[nth] = document.getElementById("gs_select_"+nth);
var key = event.keyCode;
if (key==32
|| (key>=48 && key<=57)
|| (key>=65 && key<=90))
{
if (gs_stor[nth].length<3)
{
var car = String.fromCharCode(key).toUpperCase();
gs_stor[nth]+=car;
gs_search(nth);
}
if (gs_timer[nth]!=null) clearTimeout(gs_timer[nth]);
gs_timer[nth] = setTimeout('gs_stor['+nth+']=""',gs_timeout);
return false;
}
else
return true;
}
function gs_search(nth)
{
var mem=[-1,-1,-1];
var nb = gs_select[nth].length;
for (var ith=0; ith<nb; ++ith)
{
var label = gs_select[nth][ith].innerHTML.toUpperCase();
if (gs_stor[nth].substr(0,1)==label.substr(0,1) && mem[0]==-1) mem[0]=ith;
if (gs_stor[nth].substr(0,2)==label.substr(0,2) && mem[1]==-1) mem[1]=ith;
if (gs_stor[nth].substr(0,3)==label.substr(0,3) && mem[2]==-1) mem[2]=ith;
}
if (mem[2]>=0) index=mem[2];
else if (mem[1]>=0) index=mem[1];
else if (mem[0]>=0) index=mem[0];
gs_select[nth].selectedIndex = index;
} |
L'apel de la fonction mk_select
Code:
<TD width=150><SPAN class="hide_selection"><SCRIPT language="javascript">mk_select("serv_service[{ligne}]","{serv_service}",1)</SCRIPT></SPAN></TD>
Jusque la pas de problème , mais lorsque j'essaye de faire intéragir la deuxième box avec la prmière, je me retrouve avec le choix complet des noms, au lieu de n'avoir que ceux qu'il faudrait :s
appel de la deuxième box
Code:
<TD width=150><SPAN class="hide_selection"><SCRIPT language="javascript">mk_select("serv_nom[{ligne}]","{serv_service}",1)</SCRIPT></SPAN></TD>
et le lien avec la bdd en php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
/*** Produire la table des services ***/
$max_numero = dernierNumero($courrier);
foreach($courrier["attrib"] as $idx=>$serv)
if (!isset($serv["delete"]) && $serv["vu"])
{
$t->set_var(array(
"ligne" => $idx,
"serv_service" => $dt->selection("libelle",$liste_services,$serv["service"]),
"serv_nom" => $dt->selection("nom",$liste_nom,$serv["service"]),
"serv_motif" => $dt->selection("libelle",$liste_motifs,$serv["motif"]),
"serv_observ" => $serv["observ"],
"serv_dest" => $serv["dest"] ? "checked" : "",
"serv_copie" => $serv["copie"] ? "checked" : "",
"serv_date_transmis" => $serv["date_transmis"],
"serv_date_retour" => $serv["date_retour"],
"serv_numero" => $serv["numero"],
"max_numero" => $max_numero,
));
$t->parse("serv_table","services",true);
} |
Je suis conscient qu'il y'a beaucoup de code, mais ayant chercher pas mal de temp plusieurs solution dont aucune n'a eté efficace ( meme un tutoriel :s), je m'en remet a vous qui m'avait permis de résoudre mes deux précédents problémes.
Merci d'avance
Djillian