lo hago con ajax, no se si deseas implementarlo
Código PHP:
function cargarCombo (url, comboAnterior, element_id, nombre) {
//Obtenemos el contenido del div
//donde se cargaran los resultados
var element = document.getElementById(element_id);
//Obtenemos el valor seleccionado del combo anterior
var valordepende = document.getElementById(comboAnterior)
var x = valordepende.value
//construimos la url definitiva
//pasando como parametro el valor seleccionado
var fragment_url = url+'?Id='+x+"&name="+nombre;
element.innerHTML = '<img src="http://www.forosdelweb.com/images/loading.gif" />';
//abrimos la url
peticion.open("GET", fragment_url);
peticion.onreadystatechange = function() {
if (peticion.readyState == 4) {
//escribimos la respuesta
element.innerHTML = peticion.responseText;
}
}
peticion.send(null);
}
y el html y php seria mas o menos
<td width="75%"><select name="pais" onchange="javascript:cargarCombo('provincias.php', 'Actividades', 'Div_Subactividades', 'provincia')" id="Actividades">
<?
$query = "SELECT * FROM paises";
$result=mysql_query($query);
$num=mysql_numrows($result);
//mysql_close();
$i=0;
while ($i < $num) {
$Id = mysql_result($result,$i,"id");
$Actividad = mysql_result($result,$i,"pais");
?>
<option value=<? echo $Id; ?> <? if((isset($idPais)) && $idPais==$Id) {
echo 'selected="selected"';
} ?>>
<? echo $Actividad ?>
</option>
<?
$i++;
}
?>
</select>
</td>
</tr>
</table>
</td>
<td width="50%"><table width="100%" border="0" cellspacing="0" cellpadding="3" class="tblDiv">
<tr>
<td width="100%"><div id="Div_Subactividades">
<label for="SubActividades">Provincia: * </label>
<select name="provincia" id="SubActividades" class="select">
<? if(isset($idProvincia)) {
/*
$servidor = 'mysql.dfcomunica.es';
$usuario = 'my0003';
$contrasena = 'pruebas';
$datos = 'my0003';
mysql_connect($servidor,$usuario,$contrasena);
@mysql_select_db($datos) or die( "Unable to select database");
*/
$query = "SELECT * FROM estados WHERE relacion=$idPais";
$result=mysql_query($query);
$num=mysql_numrows($result);
//mysql_close();
$i=0;
$IdSubactividad = 0;
$SubActividad = '';
while ($i < $num) {
$IdSubactividad = mysql_result($result,$i,"id");
$SubActividad = mysql_result($result,$i,"estado");
?>
<option value=<? echo $IdSubactividad; if($IdSubactividad==$idProvincia) {
echo ' selected="selected"';
}?>>
<? echo htmlentities($SubActividad) ?> </option>
<?
$i++;
}
} ?>
</select>
</div></td>
Prueba a ver si puedes implementarlo
El provincias.php tendria algo como esto(se llama en el onchange del select)
Código PHP:
<?php require_once('Connections/protecniaMySql.php'); ?>
<?
$IdActividad = $_REQUEST['Id'];
$Nombre = $_REQUEST['name'];
?>
<label for="SubActividad">Provincia:</label>
<select name="<?php echo $Nombre?>" id="SubActividades" class="select">
<?
mysql_select_db($database_protecniaMySql, $protecniaMySql);
/*
$servidor = 'localhost:8889';
$usuario = 'root';
$contrasena = 'root';
$datos = 'my0004';
mysql_connect($servidor,$usuario,$contrasena);
@mysql_select_db($datos) or die( "Unable to select database");
*/
$query = "SELECT * FROM estados WHERE relacion=$IdActividad";
$result=mysql_query($query);
$num=mysql_numrows($result);
//mysql_close();
$i=0;
while ($i < $num) {
$IdSubactividad = mysql_result($result,$i,"id");
$SubActividad = mysql_result($result,$i,"estado");
?>
<option value=<? echo $IdSubactividad; ?>>
<? echo htmlentities($SubActividad) ?>
</option>
<?
$i++;
}
?>
</select>