Tengo el siguiente la siguiente función dentro de <body>
Código HTML:
<script>
//defino una serie de varibles Array para cada país
<?php
require("sql.php");
$prov = mysql_query("SELECT id FROM provincia ORDER BY id DESC", $sql_c)
or die ("Problemas al seleccionar las id de las provincias porque: ".mysql_error());
$p = mysql_fetch_array($prov);
for($i=1;$i<=$p[0];$i++)
{
echo 'var provincias_'.$i.'=new Array("Seleccione..."';
$loc = mysql_query("SELECT * FROM localidad", $sql_c)
or die ("Problemas al seleccionar las localidades porque: ".mysql_error());
while ($l=mysql_fetch_array($loc))
{
if ($l['idprov']==$i) {echo ",\"".$l['nombre']."\"";}
else{}
}
echo ')
';
}
?>
//función que cambia las provincias del select de provincias en función del país que se haya escogido en el select de país.
function cambia_loc(){
//tomo el valor del select del pais elegido
var prov
prov = document.f1.provincias[document.f1.provincias.selectedIndex].value
//miro a ver si el pais está definido
if (prov != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + prov)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.localidad.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.localidad.options[i].value=mis_provincias[i]
document.f1.localidad.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.localidad.length = 1
//coloco un guión en la única opción que he dejado
document.f1.localidad.options[0].value = "-"
document.f1.localidad.options[0].text = "-"
}
//marco como seleccionada la opción primera de provincia
document.f1.localidad.options[0].selected = true
}
</script>
<?php
$provs = mysql_query("SELECT * FROM provincia",$sql_c)
or die("Problemas al seleccionar las provincias (línea 76): ".mysql_error());
?>
<form id="f1" name="f1" method="post" action="clientes2.php">
<table width="550" border="0" cellpadding="0" cellspacing="3">
<tr>
<td align="right">Provincia:</td>
<td>
<select name="provincias" onchange="cambia_loc()">
<option value="0" selected="selected">Seleccione...</option>
<?php
while($pr = mysql_fetch_array($provs))
{
echo " <option value=\"".$pr['id']."\">".$pr['nombre']."</option>
";
}
?>
</select> </td>
</tr>
<tr>
<td align="right">Localidad</td>
<td>
<select name="localidad">
<option value="-">Seleccione la Provincia</option>
</select>
</td>
</tr>
El código trata de que tengo una lista de provincias que al seleccionar una opción en la lista localidad aparecen todas las localidades correspondientes a esa provincia.
El problema es que funcionaba y después no, así de simple y complicado.
Si ustedes pueden encontrar el error o el problema se los agradecería.