Salve a tutti vi indico subito il problema: ho due select, la prima è una lista di marche che a seconda della scelta popola l'altra con i modelli corrispondenti. Le due select funzionano perfettamente. Il database attualmente è strutturato in maniera ordinata e cioè tutti i modelli che appartengono ad una stessa marca sono tutti vicini. Mi è capitato di dover inserire dei nuovi modelli di vetture e chiaramente l'ordine si è perso e ora la prima select con le marche presenta una stessa marca due volte. Il problema è il javascript conta una sola marca solo quando sono consequenziali ma quando sono sparse le aggiunge nella select anche diverse volte. Vorrei quindi che la select con le marche vedesse solo un valore di una stessa marca. Secondo voi è possibile o mi sono incartato nella spiegazione? Vi sarei grato se poteste aiutarmi e, se non sono stato chiaro, che me lo diceste.
Vi posto il codice:
questo l'ho messo in testa alla pagina prima del body
codice:
<script language="JavaScript">
var arg=new Array;
var arg2=new Array;
function ChangeSelect(form){
selezionato = form.selectone.selectedIndex;
arg.length = 0;
arg=new Array;
arg2.length = 0;
arg2=new Array;
switch ( selezionato ){
<?
$i=0;
mysql_select_db($database_afgroup, $afgroup);
$query_selezione="SELECT v.ID_vettura AS ID_model, v.marca AS brand, v.modello AS model, v.sub_modello AS sub_model FROM sr v";
$selezione = mysql_query($query_selezione, $afgroup) or die(mysql_error());
$row_selezione = mysql_fetch_assoc($selezione);
$totalRows_selezione = mysql_num_rows($selezione);
if (! $result=mysql_query($query_selezione)) {error_die("Si è verificato un'errore nel recupero dei dati dal database!");}
while ($row = mysql_fetch_array($result)) {
if ($row["brand"] != $brand_precedente) {
$lista_brand[$i]=$row["brand"];
if ($m) {
echo "break;\n";
}
$m=1;
echo "case $i:\n";
$i++;
$j=0;
}
?>
arg[<? echo $j ?>]=new Option("<? echo $row["model"] ?> <? echo $row["sub_model"] ?>");
arg2[<? echo $j ?>]="<? echo $row["ID_model"] ?>";
<?
if ($i==1) {
$lista_modelli_ALFA[]=$row["model"];
$lista_modelli_ALFA_VALUE[]=$row["ID_model"];
}
$j++;
$brand_precedente=$row["brand"];
}
?>
}
for(i=form.selecttwo.options.length-1;i>=0;i--){
form.selecttwo.options[i].value=null;
form.selecttwo.options[i] = null;
}
for(i=0;i<arg.length;i++){
form.selecttwo.options[i]=arg[i];
form.selecttwo.options[i].value=arg2[i];
}
form.selecttwo.selectedIndex=0;
}
</script>
select marche
codice:
<select name="selectone" class="box" onChange='ChangeSelect(this.form)'>
<? for ($i=0; $i<sizeof($lista_brand); $i++) { ?>
<option><? echo $lista_brand[$i] ?></option>
<? } ?>
select modelli
codice:
<select name="selecttwo" class="box">
<? for ($i=0; $i<sizeof($lista_modelli_ALFA); $i++) { ?>
<option value="<? echo $lista_modelli_ALFA_VALUE[$i] ?>"><? echo $lista_modelli_ALFA_VALUE[$i] ?></option>
<? } ?>
Vi ringrazio in anticipo per l'aiuto che mi potreste dare.