Con esta opcion no tienes que enviar el formulario.
Que tal, yo estoy haciendo eso mismo, prueba lo siguiente, si no entiendes algo, solo tienes que preguntarlo.
Código:
<tr>
<td width="30%" align="right" class="t">
País:
<td width="70%" align="left">
<select name="pais" onChange="location = this.options[this.selectedIndex].value">
<option value="nulo">País</option>
Código PHP:
<?php
$pais = (isset($_GET ["pais"])) ? $_GET["pais"] : $HTTP_GET_VARS["pais"];
$resultado = mysql_query("SELECT xxxxxxx from xxxxxx ");
while ($linea=mysql_fetch_row($resultado)) {
if ($linea[0]==$pais){
echo ("<option value='formu.php?pais=".$linea[0]." selected>".$linea[0]."</option>\n");
}
else
{
echo ("<option value='formu.php?pais=".$linea[0].">".$linea[0]."</option>\n");
}
}
?>
Código:
</select>
<input name="po" type="hidden" value="<?=$pais?>">
</td>
<tr>
<td width="30%" align="right" class="t">
Ciudad:
<td width="70%" align="left">
<select name="ciudada" >
<option value="nulo">Ciudades</option>
<?php
Código PHP:
$cod=mysql_query("SELECT xxxxxxxx from xxxxxxx where xxxxxx='".$pais."');
while ($cod2=mysql_fetch_row($cod)) {
if ($cod2[0]==$ciudad){
echo ("<option selected>".$cod2[0]."</option>n");
}
else
echo ("<option>".$cod2[0]."</option>n");
}
?>
Código:
</select>
<input name="co" type="hidden" value="<?=$ciudad?>">
</td>
Te resumo, recargas la página con el valor del primer select pasado por get a la misma página, los input hidden son para pasar después los valores cuando hagas el submit del formulario a la siguiente hoja.
Espero te ayude. Saludos.
PD: Lo mismo tienes que cambiar alguna cosa, porque he tenido que cortarlo ya que yo lo hago para 6 <select>, pero la base es esta, fijate en el onChange del primer select, y el value en los <option>, se recarga la página y ya tienes el valor del primer select como una variable php, para hacer con ella lo que quieras.