Selects dependientes

Hola, mi consulta es esta:
Trabajo php y mysql y necesito relacionar dos Combos dinámicos, de forma tal que al seleccionar un valor del primero muestre como resultado un conjunto de valores del segundo Ejemplo
ComboPais= Argentina,.....
ComboProvincias= La Pampa,.....
La base de datos Regiones Tiene dos tablas
tbPaises
tbProvincias
La estructura de las tablas es muy simple
tbPaises:
idpais(numérico)
País(texto)
tbProvincias:
idprov(numérico)
idpais(numérico)
Provincias(texto)
Bueno la figura es más o menos esa, espero haberme explicado bien, agradecería tu respuesta.
Saludos
Carlos

1 respuesta

Respuesta
1
Tienes que rellenar los combos obteniendo los datos de la base de datos. Cuando se selecciona un país se busca en la base de datos las provincias de ese país y se rellena el segundo combo. Cuando se elige una provincia se pasa a procesar el país y provincia seleccionados. El código podría ser parecido al siguiente:
<?php
if (isset($_POST['provincia']) ) {
// Procesar datos $_POST['pais'] y $_POST['provincia']
} else {
$db = mysql_connect('localhost', '', '');
mysql_select_db('BaseDatos', $db) ) {
$consulta = "SELECT idpais,pais FROM tbPaises";
$resultado = mysql_query($consulta, $db);
echo "<form name='seleccion' method='POST'>";
echo "Paises: <SELECT NAME='pais'>";
$npais = 1;
while ($fila = mysql_fetch_array($resultado))
{
echo "<OPTION id='OPais". $npais. "' value=". $fila['idpais'] .">". $fila['pais']. " </OPTION>";
$npais ++;
}
echo "</SELECT>";
if ( (isset($_POST['pais'])) ) {
$consulta = "SELECT distinct idprov, provincias FROM tbProvincias WHERE idpais=". $_POST['pais'];
$resultado = mysql_query($consulta, $db);
echo "Provincias: <SELECT NAME='provincia'>";
$nprov = 1;
while ($fila = mysql_fetch_array($resultado))
{
echo "<OPTION id='OProv". $nprov. "' value=". $fila['idprov'] .">". $fila['provincias']. " </OPTION>";
$nprov ++;
}
echo "</SELECT>";
} else {
echo "Provincias: <SELECT NAME='provincia' disabled></SELECT>";
}
echo "<input type='submit' value='Enviar' name='Enviar'>";
echo "</form>";
}
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas