Hola todos encontre este código en un post, lo uso y me funciona a medias ya que no me actuliaza bien, lo que hago es cargar en un combo provincias y luego en otro ciudades que esten en esa provincia. Algunas veces cuando hay 6 poblaciones por ejemplo en la provincia de Madrid me muestra sólo 4, o me muestra la última que inserte y cosas así. Llevo 2 horas dándole vueltas al código y no tengo ni idea de porque actualiza mal. Si alguien me puede ayudar se lo agradecería mucho.
Código:
<FORM NAME="Tiendas" METHOD="POST" ACTION="tiendasbuscar.asp">
<p class="txt_contenido">
<SELECT NAME="Provincias" SIZE="1" OnChange="ComponerLista (document.forms.Tiendas.Provincias[selectedIndex].value);" class="cajetin">
<option selected value="- Elegir provincia -">- Elegir provincia -</option>
<%
Dim SQL, cuenta, categoria
Set Cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Cn.Open "DSN=dominio.com.tiendas"
SQL="SELECT * FROM Provincias"
rs.Open SQL, Cn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("IdProvincia")%>"><%=rs.Fields("NombreProvincia")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<SELECT NAME="Poblacion" SIZE="1" class="cajetin">
</SELECT>
<a href="javascript:document.Tiendas.submit();"><img src="imgs/BAceptar.gif" alt="Aceptar" border="0"></a>
<SCRIPT LANGUAGE="Javascript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<%
'Vamos a crear nuestros arrays de productos desde ASP
'El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript
SQL="SELECT * FROM Tiendas ORDER BY Poblacion asc"
rs.Open SQL, Cn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("Provincia") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("Provincia")
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("Poblacion")%>","<%=rs.Fields("Provincia")%>");
<%
cuenta=cuenta+1
rs.MoveNext
wend
%>
<%
'Limpiamos objetos
rs.Close
set rs=nothing
Cn.Close
set Cn=nothing
%>
var contador;
function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Tiendas.Poblacion.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Tiendas.Poblacion.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</SCRIPT>
<br></p>
</FORM>
saludos.
muchas gracias.