E' comunque possibile fare senza fare nè un refresh della pagina nè costruire dinamicamente una lista di array ( anche se secondo me è meglio fare cosi).
Il mio esempio usa un popup al quale viene passato il valore del select principale. il popup elabora una nuova seconda select e la rimanda alla pagina principale.
codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript" type="text/javascript">
<!--
function pippo(aValue) {
a = window.open('test2198c.php?sel='+aValue,"Message","width=200,height=100");
}
//-->
</script>
</head>
<body>
<select onchange="pippo(this.value)">
<option value=".">Seleziona un valore</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
<div id="myDiv">
<select name="sel2" id="sel2">
<option>----------------------</option>
</select>
</div>
</body>
</html>
Nel file seguente uso degli array, ma con una query sql il concetto è identico.
file : test2198b.php
codice:
<?php
$ok = false;
if (isset($_GET['sel'])) {
$sel = $_GET['sel'];
if ($sel == 'A') {
$pippo = array("A1"=>"A1","A2"=>"A2","A3"=>"A3","A4"=>"A4");
$ok = true;
} // if ($sel == 'A')
if ($sel == 'B') {
$pippo = array("B1"=>"B1","B2"=>"B2","B3"=>"B3","B4"=>"B4");
$ok = true;
} // if ($sel == 'B')
if ($sel == 'C') {
$pippo = array("C1"=>"C1","C2"=>"C2","C3"=>"C3","C4"=>"C4");
$ok = true;
} // if ($sel == 'C')
} // if (isset($_GET['sel'])) ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript" type="text/javascript">
<!--
function crea() {
//--------- Select di destino
destSel = window.opener.document.getElementById('myDiv');
destSel.innerHTML = document.getElementById('divResult').innerHTML;
} // function crea()
//-->
</script>
</head>
<body onload='crea()' ><?
//------------ In caso di successo
if ($ok) {?>
<center> Attendere prego </center>
<div id="divResult" style="display:none">
<select id="sel2" name="sel2"><?
foreach($pippo as $key => $value) { ?>
<option value="<? print $key ?>"><? print $value ?></option><?
} // foreach($pippo as $key => $value) ?>
</select>
</div><?
} // if ($ok)
//------------ Altrimenti
if (! $ok) { ?>
<center> Attendere prego </center>
<div id="divResult" style="display:none">
<select id="sel2" name="sel2">
<option value=".">----------------------</option>
</select>
</div><?
} // if ($ok) ?>
<script language="JavaScript" type="text/javascript">
<!--
window.close();
//-->
</script>
</body>
</html>
Dimenticavo funziona con IE