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 %>

Preguntas similare

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:
Mostrar la cita
#2 Matias Iacono
01/07/2005 - 18:31 | Informe spam
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:
Mostrar la cita
#3 Maria José Salas
01/07/2005 - 19:42 | Informe spam
Lo acabo de probar Matias tampoco funciona.
Ya no se como tengo que hacerlo. Necestio algo así:
http://www.casas365.com/es/buscador...vacaciones

alguien me puede ayudar?

"Matias Iacono" escribió en el mensaje
news:
Mostrar la cita
#4 Manuel Vera
01/07/2005 - 20:44 | Informe spam
Una idea...

La rutina Sub...End Sub que tienes en el include conviertela TODA en codigo
ASP. Es decir, tu tienes por ejemplo algo como:

<% sub xxx %>
<form name=x method=z>
<otros tags html>
<%
rutinas ASP
%>
etc
<%end sub%>

Yo lo haria (y de hecho asi lo hago) así:

<%
sub xxx()
dim shtm
shtm = "<form name=x method=z>"
shtm = shtm & "<otros tags html>"

tus otras rutinas ASP
aqui concatenas tus salidas de HTML con la variable shtm
etc
shtm = shtm & "</FORM>"
end sub
%>

Salu2
MV


"Maria José Salas" wrote in message
news:%
Mostrar la cita
donde
Mostrar la cita
pongo
Mostrar la cita
navegador
Mostrar la cita
BODY,
Mostrar la cita
en
Mostrar la cita
llama
Mostrar la cita
#5 Manuel Vera
01/07/2005 - 21:23 | Informe spam
Una pregunta Matias...
Tu haz hecho algo como lo hace Maria Jose?
Es decir, colocar HTML puro y directo dentro de un SUb..End Sub de
VBScript... y que se cargue solo cuando tu invocas el procedimiento?
Como yo lo veo, de esa forma, los tags HTML se cargan dos veces, 1 cuando se
invoca la rutina y 2 cuando se muestra el HTML de salida al navegador
cliente.
Por eso es que yo le sugiero meter todo dentro de variables de VBScript.
Salu2
MV

"Matias Iacono" wrote in message
news:
Mostrar la cita
dicho
Mostrar la cita
codigo
Mostrar la cita
metido
Mostrar la cita
sin
Mostrar la cita
perfectamente.
Mostrar la cita
Tupla("<%=rs.Fields("provincia")%>","<%=rs.Fields("IdProvincia")%>");
Mostrar la cita
Ads by Google
Search Busqueda sugerida