Foros del Web » Programando para Internet » ASP Clásico »

Ayuda con errores en paginación

Estas en el tema de Ayuda con errores en paginación en el foro de ASP Clásico en Foros del Web. Buenos días a todos, He estado intentando impletando la paginación en una web que estoy haciendo y más o menos he conseguido entender con un ...
  #1 (permalink)  
Antiguo 18/08/2008, 05:36
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Ayuda con errores en paginación

Buenos días a todos,

He estado intentando impletando la paginación en una web que estoy haciendo y más o menos he conseguido entender con un código que encontré por ahí como funciona. Me divide los registros en páginas correctamente y todo eso pero me da el siguiente error "Error de sintaxis (falta operador) en la expresión de consulta 'Genero =1?pag=2'." al intentar cambiar de página.

Este es el código de la página listado.asp que es un listado de películas por diferentes géneros. Al pulsar en un género se muestran las 10 primeras películas de ese género y debajo aparecen links a las siguientes páginas si las hay.

Código HTML:
<div class="menu31">
	<div class="blanco">
   <% id= request("id")   
	ssql = "Select * from PELICULAS where Genero =" & id & " ORDER by Titulo asc"
	tabla.Open ssql,conexion,adopenstatic,adcmdtext

num_registros = 9 
 session("ssql")=ssql
	   %>
       
<%If Request.QueryString("pag")<>"" Then
   Session("pagina")=Request.QueryString("pag")
Else
   Session("pagina")=1
End If

tabla.PageSize=num_registros
tabla.AbsolutePage=Session("pagina")
%>
<div align="center">
Número de página actual: <b><%=Session("pagina")%></b>
<br>
Número de páginas total: <b><%=tabla.PageCount%></b>
<br>
Número de registros por página: <b><%=tabla.PageSize%></b>
<br>
Número de registros seleccionados: <b><%=tabla.RecordCount%></b>
</div>

	   
<%
num_campos=tabla.Fields.Count
For campo=0 to num_campos-1%>
   
<%
Next
registros_mostrados = 0
While (Not tabla.eof And registros_mostrados < num_registros)
   registros_mostrados = registros_mostrados +1
%> 
<%For campo=0 to num_campos-1 %>
   <%Next%>
			
 			<div class="fila">
            	<div class="lista1">
                <a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><img class="imagen" style="border: 1px solid #0000;"  src="miniaturas/<%=tabla.fields("foto")%>" /></a>
                </div>   
                    <div class="lista">
                        <ul>
                           <li><span class="negrita"><a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><%=tabla.fields("Titulo")%></a></span> <a href="buscaranio.asp?anio=<%=tabla.fields("Anio")%>" target="_self">(<%=tabla.fields("Anio")%>)</a></li>
                            <li><span class="gris"><a href="buscarpais.asp?pais=<%=tabla.fields("Pais")%>" target="_self"><%=tabla.fields("Pais")%></span></a></li>
                            <li><span class="lnegro"><a href="buscardirector.asp?director=<%=tabla.fields("Director")%>" target="_self"><%=tabla.fields("Director")%></span></a></li>
                            <li><%=tabla.fields("Interpretes")%></li>
                        </ul>
                    </div>
                </div>                      
                
		    <% tabla.movenext
			Wend %>
                
                            <div class="fila">
            	<div class="lista1">
                <a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><img class="imagen" style="border: 1px solid #0000;"  src="miniaturas/<%=tabla.fields("foto")%>" /></a>
                </div>          
                    <div class="lista">
                        <ul>
                           <li><span class="negrita"><a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><%=tabla.fields("Titulo")%></a></span> <a href="buscaranio.asp?anio=<%=tabla.fields("Anio")%>" target="_self">(<%=tabla.fields("Anio")%>)</a></li>
                            <li><span class="gris"><a href="buscarpais.asp?pais=<%=tabla.fields("Pais")%>" target="_self"><%=tabla.fields("Pais")%></span></a></li>
                            <li><span class="lnegro"><a href="buscardirector.asp?director=<%=tabla.fields("Director")%>" target="_self"><%=tabla.fields("Director")%></span></a></li>
                            <li><%=tabla.fields("Interpretes")%></li>
                        </ul>
                    </div>
                </div>      
                
<%   i=0
While i<tabla.PageCount
   i=i+1
%>
   <b><a href="listado.asp?id=<%=id%>?pag=<%=i%>"><%=i%></a></b>
<%
Wend
%>                              
				 
       <% tabla.close %>

</div> 
Esta página tiene un include a la página AbrirBd.asp que tiene este código
Código HTML:
<%Set conexion = Server.CreateObject("ADODB.Connection")
Set tabla = Server.CreateObject("ADODB.recordset")
Set tabla2 = Server.CreateObject("ADODB.recordset")


Const adCmdText = &H0001
Const adOpenStatic = 3

conexion.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0; Data Source="&server.MapPath("pelis.mdb")%> 
  #2 (permalink)  
Antiguo 18/08/2008, 05:47
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Ayuda con errores en paginación

Hola,

es un error de sintaxis al final, cuando construyes el enlace de la paginación:

Código:
 <b><a href="listado.asp?id=<%=id%>?pag=<%=i%>"><%=i%></a></b> 
Cambia el segundo ? por &

Código:
 <b><a href="listado.asp?id=<%=id%>&pag=<%=i%>"><%=i%></a></b> 
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #3 (permalink)  
Antiguo 18/08/2008, 06:31
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Ayuda con errores en paginación

Hola tammander,

Muchas gracias por tu ayuda, tenías razón en el fallo, lo he cambiado y ahora los links a las otras páginas me funcionan lo malo es que ahora me he dado cuenta de otros fallos, como que por ejemplo que aunque dice que saca 9 registros por página en realidad saca 10, es decir "no cuenta" el registro 0, pero la cuenta de los resultados si la hace bien, es decir si en un género sólo tengo 5 películas me indica registros seleccionados: 5. Otro fallo que no se muy bien porque ocurre es que el último registro de una página siempre aparece como otra vez como el primero de la siguiente.

He hecho un par de cambios en el archivo de listado porque si no me daba problemas al mostrar la última página de los resultados o al mostrar resultados que sólo tuvieran una página, he puesto los cambios entre los cambios.

Código HTML:
<div class="menu31">
	<div class="blanco">
   <% id= request("id")   
	ssql = "Select * from PELICULAS where Genero =" & id & " ORDER by Titulo asc"
	tabla.Open sSQL,conexion,adopenstatic,adcmdtext

'resultados por pagina a elegir arbitrariamente'
num_registros = 9 
 session("ssql")=ssql
	   %>
       
<!--actualizamos numero de pagina-->
<%If Request.QueryString("pag")<>"" Then
   Session("pagina")=Request.QueryString("pag")
Else
   Session("pagina")=1
End If

'Dimensionamos las paginas y determinamos la pagina actual'
tabla.PageSize=num_registros
tabla.AbsolutePage=Session("pagina")
%>
<div align="center">
Número de página actual: <b><%=Session("pagina")%></b>
<br>
Número de páginas total: <b><%=tabla.PageCount%></b>
<br>
Número de registros por página: <b><%=tabla.PageSize%></b>
<br>
Número de registros seleccionados: <b><%=tabla.RecordCount%></b>
</div>

	   
<%
'Contamos el numero de campos
num_campos=tabla.Fields.Count
For campo=0 to num_campos-1%>
   
<%
Next
registros_mostrados = 0
While (Not tabla.eof And registros_mostrados < num_registros)
   registros_mostrados = registros_mostrados +1
%> 
<%For campo=0 to num_campos-1 %>
   <%Next%>
			
 			<div class="fila">
            	<div class="lista1">
                <a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><img class="imagen" style="border: 1px solid #0000;"  src="miniaturas/<%=tabla.fields("foto")%>" /></a>
                </div>   
                    <div class="lista">
                        <ul>
                           <li><span class="negrita"><a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><%=tabla.fields("Titulo")%></a></span> <a href="buscaranio.asp?anio=<%=tabla.fields("Anio")%>" target="_self">(<%=tabla.fields("Anio")%>)</a></li>
                            <li><span class="gris"><a href="buscarpais.asp?pais=<%=tabla.fields("Pais")%>" target="_self"><%=tabla.fields("Pais")%></span></a></li>
                            <li><span class="lnegro"><a href="buscardirector.asp?director=<%=tabla.fields("Director")%>" target="_self"><%=tabla.fields("Director")%></span></a></li>
                            <li><%=tabla.fields("Interpretes")%></li>
                        </ul>
                    </div>
                </div>                      
                
		    <% tabla.movenext
			Wend 
			[B]if not tabla.eof then [/B]
			%>
                
                            <div class="fila">
            	<div class="lista1">
                <a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><img class="imagen" style="border: 1px solid #0000;"  src="miniaturas/<%=tabla.fields("foto")%>" /></a>
                </div>          
                    <div class="lista">
                        <ul>
                           <li><span class="negrita"><a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><%=tabla.fields("Titulo")%></a></span> <a href="buscaranio.asp?anio=<%=tabla.fields("Anio")%>" target="_self">(<%=tabla.fields("Anio")%>)</a></li>
                            <li><span class="gris"><a href="buscarpais.asp?pais=<%=tabla.fields("Pais")%>" target="_self"><%=tabla.fields("Pais")%></span></a></li>
                            <li><span class="lnegro"><a href="buscardirector.asp?director=<%=tabla.fields("Director")%>" target="_self"><%=tabla.fields("Director")%></span></a></li>
                            <li><%=tabla.fields("Interpretes")%></li>
                        </ul>
                    </div>
                </div>      
                
<%
[B]end if[/B]
i=0%>
[B]<div class="paginacion">[/B]
<%While i<tabla.PageCount
   i=i+1
%>
   <a href="listado.asp?id=<%=id%>&pag=<%=i%>"><%=i%></a>
<%
Wend
%>                              
[B]</div>[/B]				 
       <% tabla.close 
	   %>

</div> 
  #4 (permalink)  
Antiguo 18/08/2008, 08:13
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Ayuda con errores en paginación

Ya lo he solucionado, era un fallo mío, he dejado una parte que ya no hacía falta y por eso no iba bien, en cuanto he quitado esto:
Código HTML:
[b]if not tabla.eof then [/b]
			%>
                
                            <div class="fila">
            	<div class="lista1">
                <a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><img class="imagen" style="border: 1px solid #0000;"  src="miniaturas/<%=tabla.fields("foto")%>" /></a>
                </div>          
                    <div class="lista">
                        <ul>
                           <li><span class="negrita"><a href="detalle.asp?id=<%=tabla.fields("id")%>" title="Detalle" target="_self"><%=tabla.fields("Titulo")%></a></span> <a href="buscaranio.asp?anio=<%=tabla.fields("Anio")%>" target="_self">(<%=tabla.fields("Anio")%>)</a></li>
                            <li><span class="gris"><a href="buscarpais.asp?pais=<%=tabla.fields("Pais")%>" target="_self"><%=tabla.fields("Pais")%></span></a></li>
                            <li><span class="lnegro"><a href="buscardirector.asp?director=<%=tabla.fields("Director")%>" target="_self"><%=tabla.fields("Director")%></span></a></li>
                            <li><%=tabla.fields("Interpretes")%></li>
                        </ul>
                    </div>
                </div>      
                
<%
[b]end if[/b]
Va perfecto, siento las molestias.
  #5 (permalink)  
Antiguo 18/08/2008, 09:35
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Ayuda con errores en paginación

Me alegra ver que pudiste solucionar el problema.



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #6 (permalink)  
Antiguo 18/08/2008, 12:05
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Ayuda con errores en paginación

Sí, la verdad es que supongo que era mirar un poco donde estaba el fallo y tener un poco de suerte. Ahora estoy dandole vueltas a ver como consigo que me aparezca los típicos links de anterior y siguiente en todas las páginas que hacen falta pero que también me salgan el link a todas las páginas numeradas a la vez y me estoy volviendo loco. Si sólo fuera sacar la página en la que estas y las opciones de anterior y siguiente me valdría con esto:

Código HTML:
<div class="paginacion">
<% 
While i<tabla.PageCount  
   i=i+1
%>
<a href="listado.asp?id=<%=id%>&pag=<%=(i - 1)%>">Anterior </a>
<a href="listado.asp?id=<%=id%>&pag=<%=i%>"><%=i%></a>
<a href="listado.asp?id=<%=id%>&pag=<%=(i + 1)%>"> Siguiente</a>
<%
Wend
%>
>                         
</div>				 
       <% 
	   tabla.close 
	   %>
</div> 
Pero claro si lo hago así aunque me lo hace "bien" gracias al while me aparece todos los números de las páginas con su anterior siguiente en cada página. Es decir me sale así: Anterior 1 Siguiente Anterior 2 Siguiente etc

Lo que no se es como hacer para colocar antes y después del while los links de anterior y siguiente. Supongo que necesito una variable de sesión que contega el número de la página actual par sumarle o restarle 1 en estos links pero no acabo de ver claro donde la coloco, ya que el while me lo fastidia todo.

Lo que me gustaría es que se viese así:
Anterior 1 2 3 4 5 Siguiente

Pero claro también habría que comprobar si es la última página para no sacar el link de siguiente y si es la primera para no sacar el link de anterior. ¿Creéis que quizá debería reescribir el código desde el principio, todo lo referente a paginación, o hay alguna forma fácil de lograr lo que yo quiero que se me está escapando?
  #7 (permalink)  
Antiguo 18/08/2008, 12:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Ayuda con errores en paginación

Hola

Gracias a 3Pies y AZ tenemos estos

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 19/08/2008, 03:54
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Ayuda con errores en paginación

Hola Adler,

Muchas gracias por el link a ese post, vienen muchas cosas interesantes además de la paginación, estoy mirando el código para ver como adaptarlo a mi página a ver que tal me va.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:28.