continuo problema include

01/07/2005 - 09:00 por Maria José Salas | Informe spam
Hola a todos. Continuo con mi problema de listasdependientes metido en un
include.
Os pongo el ejemplo que tengo hecho.
Tengo la pagina listasdependientes.asp que muestra dos listas dependientes
de paises y ciudades. Cuando esta página la ejecuto sin estar ente <%sub
listas %> <% end sub%> funciona perfectamente. Pero cuando esta pagina
la incluyo en una pagina principal que la llama ya no me funciona.
Os pongo aquí el código a ver si vosotros veis el error.
Todos los archivos los tengo en C:\Inetpub\wwwroot
Espero que me podais ayudar.
Gracias de nuevo.
Canela


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- #include file="listasdependientespaises.asp" -->

<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">

<table width="780" border="0" cellspacing="0" align="center" >
<tr>
<td width="119">
</td>
<td width="660">
<%call listas %>
</td>
</tr>
</table>


</BODY>
</HTML>



<% sub listas %>
<HTML>
<HEAD>
<TITLE>Listas dependientes</TITLE>
</HEAD>
<BODY>

<H2><CENTER>Listas dinámicas dependientes</CENTER></H2>
<P><B>Elige un pais para ver las provincias:</B>
<P>
<FORM NAME="Listas" METHOD="POST" ACTION="">
<B>Paises</B>
<SELECT NAME="paises" SIZE="1"
OnChange="ComponerLista
(document.forms.Listas.paises[selectedIndex].value);">
<%
Dim oConn, rs, SQL, cuenta, pais

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("mibase.mdb")

SQL="SELECT * FROM paises"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("Idpais")%>"
<% if cuenta=1 then%>
SELECTED
<%end if%>>
<%=rs.Fields("pais")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<P><B>Provincias</B>
<SELECT NAME="Provincias" SIZE="1">
</SELECT>
</FORM>

<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 provincias ORDER BY npais, IdProvincia"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("npais") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("npais")
'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("provincia")%>","<%=rs.Fields("IdProvincia")%>");

<%
cuenta=cuenta+1
rs.MoveNext
wend
%>


<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=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 );

Listas.Provincias.options[contador] = optionObj;
} // for
} // ComponerLista


function BorrarLista() {

Listas.Provincias.length=0;
}

//Inicializamos
ComponerLista (1);

</SCRIPT>
<br>


</BODY>
</HTML>
<% end sub %>
 

Leer las respuestas

#1 Maria José Salas
01/07/2005 - 16:59 | Informe spam
Gracias Matia por contestar. Ya que quitado los tags que me has dicho pero
sigue sin funcionar.

Si cargo la página de la lista dependiente quitandole <%sub lista
%>.<%end sub%> la pagina funciona bien, es decir sale un combo donde
eligo el pais y luego otro donde puedo elegir la provincia, pero si pongo el
sub y la vuelvo a ejecutar ya no me funciona.
Sabeis como puedo solucionarlo.
Gracias




"Matias Iacono" escribió en el mensaje
news:
No habia tenido mucho tiempo en ver el codigo, pero lo primero que veo es
que en tu SUB, tambien incluyes los tags html de <html><body>

Al incluir estos, tambien se agregan en la pagina que contendra el
include, por lo que para el navegador habra un error de tags y todo se
mezclara.

Seguramente, si ves el codigo fuente resultante de tu pagina, todo estara
ahi, pero, como tienes esta mezcla de tag repetidos el navegador no tiene
la capacidad de mostrarla.

El resultado en tu caso queda algo asi:

<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">

<table width="780" border="0" cellspacing="0" align="center" >
<tr>
<td width="119">
</td>
<td width="660">
<HTML>
<HEAD>
<TITLE>Listas dependientes</TITLE>
</HEAD>
<BODY>

Y ahi hay toda una confusion.

Como consejo, siempre que uses includes, solo coloca en estos codigo ASP,
nada de HTML, pero, de cabeceras, o sea, puedes generar tablas HTML, pero
no, como en este caso, el uso completo del HTML, HEAD, BODY, etc.

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"Maria José Salas" escribió en el mensaje
news:
Hola a todos. Continuo con mi problema de listasdependientes metido en un
include.
Os pongo el ejemplo que tengo hecho.
Tengo la pagina listasdependientes.asp que muestra dos listas
dependientes de paises y ciudades. Cuando esta página la ejecuto sin
estar ente <%sub listas %> <% end sub%> funciona perfectamente. Pero
cuando esta pagina la incluyo en una pagina principal que la llama ya no
me funciona.
Os pongo aquí el código a ver si vosotros veis el error.
Todos los archivos los tengo en C:\Inetpub\wwwroot
Espero que me podais ayudar.
Gracias de nuevo.
Canela


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- #include file="listasdependientespaises.asp" -->

<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">

<table width="780" border="0" cellspacing="0" align="center" >
<tr>
<td width="119">
</td>
<td width="660">
<%call listas %>
</td>
</tr>
</table>


</BODY>
</HTML>



<% sub listas %>
<HTML>
<HEAD>
<TITLE>Listas dependientes</TITLE>
</HEAD>
<BODY>

<H2><CENTER>Listas dinámicas dependientes</CENTER></H2>
<P><B>Elige un pais para ver las provincias:</B>
<P>
<FORM NAME="Listas" METHOD="POST" ACTION="">
<B>Paises</B>
<SELECT NAME="paises" SIZE="1"
OnChange="ComponerLista
(document.forms.Listas.paises[selectedIndex].value);">
<%
Dim oConn, rs, SQL, cuenta, pais

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("mibase.mdb")

SQL="SELECT * FROM paises"
rs.Open SQL, oConn
cuenta=1
while not rs.EOF
%>
<OPTION VALUE="<%=rs.Fields("Idpais")%>"
<% if cuenta=1 then%>
SELECTED
<%end if%>>
<%=rs.Fields("pais")%></OPTION>
<%
rs.MoveNext
cuenta=cuenta+1
wend
rs.Close
%>
</SELECT>
<P><B>Provincias</B>
<SELECT NAME="Provincias" SIZE="1">
</SELECT>
</FORM>

<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 provincias ORDER BY npais, IdProvincia"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF
if cat<>rs.Fields("npais") then
' cambio de categoria, empiezo a contar en 0
cuenta=0
cat=rs.Fields("npais")
'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("provincia")%>","<%=rs.Fields("IdProvincia")%>");

<%
cuenta=cuenta+1
rs.MoveNext
wend
%>


<%
'Limpiamos objetos
rs.Close
set rs=nothing
oConn.Close
set oConn=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 );

Listas.Provincias.options[contador] = optionObj;
} // for
} // ComponerLista


function BorrarLista() {

Listas.Provincias.length=0;
}

//Inicializamos
ComponerLista (1);

</SCRIPT>
<br>


</BODY>
</HTML>
<% end sub %>





Preguntas similares