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

No pagina con MySQL

Estas en el tema de No pagina con MySQL en el foro de ASP Clásico en Foros del Web. Tengo un problema con la paginación en Mysql. En las medidas de los artículos dispongo de uno o varios registros que pertenecen al mismo artículo ...
  #1 (permalink)  
Antiguo 19/08/2007, 14:05
 
Fecha de Ingreso: noviembre-2002
Ubicación: Elche
Mensajes: 548
Antigüedad: 21 años, 6 meses
Puntos: 0
Pregunta No pagina con MySQL

Tengo un problema con la paginación en Mysql.

En las medidas de los artículos dispongo de uno o varios registros que pertenecen al mismo artículo y que corresponden a diversas medidas. Por lo tanto para poder paginar por artículos debo agrupar los registros por el artículo al que corresponden.

Para poder paginar en ASP y con SQL empleaba este código:

strSQL = "SELECT * FROM medidas_articulos WHERE catalogo_medida_articulo_db='S' GROUP BY articulo_medida_articulo_db "
... el rs.RecordCount... y funcionaba correctamente.

Ahora necesito hacerlo con MySQL y lo he intentado así y no funciona bien:

strSQL = "SELECT COUNT(*) AS total FROM medidas_articulos WHERE catalogo_medida_articulo_db='S' GROUP BY articulo_medida_articulo_db "

¿Cómo puedo agrupar y que me controle correctamente para poder paginar los resultados con la MySQL?

Hasta ahora, sin la necesidad de agrupar siempre me ha funcionado bien en multitud de veces. ¿Es que no se puede agrupar para el "COUNT"?

Gracias por vuestra ayuda.
Saludos
  #2 (permalink)  
Antiguo 21/08/2007, 05:45
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 4 meses
Puntos: 8
Re: No pagina con MySQL

EL SELECT COUNT() que planteas no puede funcionar. Claro que se puede agrupar para un COUNT pero el resultado no es el que creo que esperas.
EL resultado de esa consulta va a ser una seríe de líneas en las que aparece la cantidad de artículos que tienes para cada articulo_medida_articulo_db diferente. Algo así:

Código:
4
12
4
5
6
8
3
1
5
2
7

No se me ocurre porqué no te funciona la misma consulta que haces para SQL

En la tabla medidas_articulos supongo que tendrás el campo del código del artículo (Una posible FK a la tabla artículo). Si es así yo haría un SELECT DISTICNT (id_articulo) FROM... o un SELECT COUNT(id_articulo) FROM ... y luego contar los regsitros que me devuelve...
__________________
Kelpie
  #3 (permalink)  
Antiguo 21/08/2007, 11:44
 
Fecha de Ingreso: noviembre-2002
Ubicación: Elche
Mensajes: 548
Antigüedad: 21 años, 6 meses
Puntos: 0
Re: No pagina con MySQL

Gracias por tu ayuda. Así lo solucioné después de varias pruebas.

Gracias de todas formas
  #4 (permalink)  
Antiguo 22/08/2007, 08:18
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: No pagina con MySQL

Hola a todos!!!, tengo un problema y espero que alguien pùeda darme una idea de como solucionarlo...

Estoy paginando unos resultados de una consulta a la base de datos, pero la pàgina donde realizo el listado recibe datos de un formulario por medio del (request) de otra pàgina, esos datos los empleo en como paràmetros en la consulta SQL, la primera pàginame la muestra bien, pero cuando preciono los vinculos de "siguiente", "ùltimo", entre otros me arroja un error...

He probado la pàginaciòn en una pàgina que no recibe paràmetros por el request y funciona de lo mejor (todos los vìnculos), pero el problema es que cuando se llama a algùn vìnculo """"supongo""" que el objeto Request queda esperando los paràmetros que vienen del formulario, los cuales fueron pasados en una primera instancia y realizada la consulta, ahora lo que se quiere es pàginar todos los resultados de esa consulta pero no puedo!!!

Alguno tiene una(1) idea de que puedo hacer para solucionar esto????
  #5 (permalink)  
Antiguo 22/08/2007, 12:07
 
Fecha de Ingreso: noviembre-2002
Ubicación: Elche
Mensajes: 548
Antigüedad: 21 años, 6 meses
Puntos: 0
Re: No pagina con MySQL

Te he resumido en la medida de los posible el código. Cambia los datos a tu comodidad pero creo que esto te servirá.

El enlace con los formularios lo he puesto mediante funciones para que lo veas más claro. En realidad no hace falta que los hagas así. Ya te digo, es sólo orientativo.

FUNCIONES
function ir_uno(){
document.formulario_ir_uno.submit()
}


function ir_menos(){
document.formulario_ir_menos.submit()
}


function ir_mas(){
document.formulario_ir_mas.submit()
}


function ir_ultima(){
document.formulario_ir_ultima.submit()
}

EN EL BODY


------- ver cuantos registros tenemos----------
----- Haces tu conexión a la DDBB

tampagina =x ' número de registros que vas a mostrar por página
pagina=CInt(request.form("pagina"))
if pagina=0 then
pagina=1
end if
strSQL = "SELECT COUNT(*) AS total FROM tabla WHERE tus condiciones

rs.Open strSQL, Conexion_rs, 1, 2

Total=Cint(rs.Fields("total"))
tamano=Cint(tampagina)
totalpaginas=Cint(Round(Total/tamano))
control_paginacion=Cint(totalpaginas*tampagina)
if control_paginacion < Total then
totalpaginas=totalpaginas+1
end if


if totalpaginas=0 then
pagina=0
end if
------ cierras la conexión a DDBB

strSQL = "SELECT * FROM tabla WHERE tus_condiciones&" limit "&(pagina-1)*tampagina &","&tampagina


'--------------------------------- TABLA DE CONTROL DE PAGINA ----------------------------
<center><table border="0px" cellspacing="0px" cellpadding="0px">
<tr>
<td>
Est&aacute; en la p&aacute;gina: <%=pagina%> de <%=totalpaginas%>.
</td>

<td >
<table border="0px" cellspacing="0px" cellpadding="0px">
<tr>
<%if pagina > 1 then
%> <td>
<div id="uno" onclick="ir_uno();"><< Primera</div </td>
<td>
<div id="menos" onclick="ir_menos();">< Anterior</div;
</td>

<%
end if
if pagina< totalpaginas then

%>
<td>
<div id="mas" onclick="ir_mas();">Siguiente > </div>&nbsp;&nbsp;&nbsp;
</td>
<td>
<div id="ultima" onclick="ir_ultima();">&Uacute;ltima >> </div>&nbsp;&nbsp;&nbsp;
</td>
<%
end if
%>
</tr>
</table></center>

----------------------- Mostramos el resultado

rs.AbsolutePage=PaginaActual
CuantosRegistros=0
if Total >0 then '--------------muy importante controlamos que no se pete en el bucle
do while not rs.EOF and CuantosRegistros < TamPagina

------------------------ tu código de presentación de los datos

CuantosRegistros=CuantosRegistros+1
rs.MoveNext
loop

--------------- cerramos los ficheros


End if ' del control del Total


FORMULARIOS

<form style="display:none;" name="formulario_ir_uno" action="LA_MISMA_PAGINA_EN_LA_QUE_ESTAMOS" method="post" style="display:none;">
<input style="display:none;" id="pagina" name="pagina" type="text" value=1></input>
</form>


<form name="formulario_ir_menos" action="LA_MISMA_PAGINA_EN_LA_QUE_ESTAMOS"
method="post" style="display:none;">
<input style="display:none;" id="pagina" name="pagina" type="text" value=<%= pagina-1%>></input>
</form>


<form name="formulario_ir_mas" action="LA_MISMA_PAGINA_EN_LA_QUE_ESTAMOS" method="post" style="display:none;">
<input style="display:none;" id="pagina" name="pagina" type="text" value=<%= pagina+1%> ></input>
</form>


<form name="formulario_ir_ultima" action="LA_MISMA_PAGINA_EN_LA_QUE_ESTAMOS" method="post" style="display:none;">
<input style="display:none;" id="pagina" name="pagina" type="text" value=<%= totalpaginas%> ></input>
</form>
  #6 (permalink)  
Antiguo 22/08/2007, 12:09
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 8 meses
Puntos: 2
Re: No pagina con MySQL

Si los datos del formulario los recibe por Post, me imagino que tendrás que colocar los botones de siguiente y atrás en un nuevo formulario que se envíe sobre si mismo cada vez que se presiona el botón, con los parámetros para paginar, y el parámetro que recibe inicialmente del form principal.
Si son por gets, simplemente reenvía en la URL nuevamente el parámetro y listo.
Falla justamente por lo que suponías, al quedarse esperando el parámetro que recibe del formulario, me imagino que el parámetro que pasa el formulario es usado en el where de la consulta, con lo que ahora estarías colocando un valor vacío al where, y de ahí el error.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #7 (permalink)  
Antiguo 27/08/2007, 06:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 34
Antigüedad: 18 años, 9 meses
Puntos: 0
Sonrisa Re: No pagina con MySQL

Hola!!! ya he resuelto mi problema y me funciona muy bien!!! he metido los paràmetros en variables de sessiòn y los he pasado en un formulario con campos ocultos cada vez que pagino!!!


sì alguien necesita la soluciòn puede enviarme un correo a la direcciòn: [email protected]


gracias a todos por la ayuda!!!
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 13:43.