Foros del Web » Programando para Internet » PHP »

Paginación de grandes resultados

Estas en el tema de Paginación de grandes resultados en el foro de PHP en Foros del Web. Buenas, tengo un problema, eh probado varios script para paginar una db mysql que tengo, y me esta dando muchos problemas. Resulta que los script ...
  #1 (permalink)  
Antiguo 25/01/2005, 15:47
Avatar de Riso  
Fecha de Ingreso: junio-2004
Ubicación: Buenos Aires
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
Paginación de grandes resultados

Buenas, tengo un problema, eh probado varios script para paginar una db mysql que tengo, y me esta dando muchos problemas.

Resulta que los script funcionan correctamente con otras tablas, pero con la que tengo de 47,597 Registros no. Me da errores mysql_fetch_array(): y mysql_num_rows():….



Alguien sabes que solución tengo?

Por favor, agradeceria cualquier tipo de información.



Saludos Cordiales, Martin RIsolino
(si creen que este post es para el foro de bases de datos muevanlo)
__________________
SAludos, QSK RISO :cool:

Última edición por Riso; 26/01/2005 a las 06:54
  #2 (permalink)  
Antiguo 25/01/2005, 15:57
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 339
Antigüedad: 14 años, 3 meses
Puntos: 4
Coloca el Error para ver si te podemos ayudar !
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #3 (permalink)  
Antiguo 25/01/2005, 16:07
Avatar de Riso  
Fecha de Ingreso: junio-2004
Ubicación: Buenos Aires
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
Código:
Warning: mysql_query(): Unable to save result set in /www/...etc/.../.../index.php on line 16

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/...etc/.../.../index.php on line 18

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/...etc/.../.../index.php on line 36 
Código PHP:
16$query1 mysql_query ("SELECT * FROM $table");
18$numrows mysql_num_rows ($query1);
36) while ($myrow mysql_fetch_array ($query2)) { 
>Ese script no me da error con otras tablas de menos magnitud.
>De todos modos está para mostrar solo 10 registros por pagina.
>Tarda menos de un segundo en mostrar esos errores.
__________________
SAludos, QSK RISO :cool:
  #4 (permalink)  
Antiguo 25/01/2005, 18:04
Avatar de Riso  
Fecha de Ingreso: junio-2004
Ubicación: Buenos Aires
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
che, cualquier suposición que tengan tirenla por favor
__________________
SAludos, QSK RISO :cool:
  #5 (permalink)  
Antiguo 26/01/2005, 05:41
Avatar de Riso  
Fecha de Ingreso: junio-2004
Ubicación: Buenos Aires
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
Algun moderador que mueva este post a bases de datos? por favor, es que necesito algun tipo de respuesta, y no quiero repetir el post por todos lados.
Gracias.
__________________
SAludos, QSK RISO :cool:
  #6 (permalink)  
Antiguo 26/01/2005, 07:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Primero habría que ver bien el error exacto que tienes .. para eso puedes usar la función mysql_error() en tus funciones .. así veras concretamente que error tienes .. tando si es de SQL como si es de conexión:


$query1 = mysql_query ("SELECT * FROM $table") or die (mysql_error());

El resto de errores que ves se originan en cadena por un problema ahí mismo o bien en la conexión (mysql_connect() o selección de tu BD a trabajar mysql_select_db())

Con el error más "claro" podrás ver que sucede y apartir de ahí ver soluciones.

A todo esto .. deberías poner el código -completo- que usas para "paginar" .. tal vez tengas problemas de otro tipo referente a tus cálculos de registros por página .. o similar que bajo ciertas condiciones originan esos problemas ..

Un saludo,
  #7 (permalink)  
Antiguo 26/01/2005, 07:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

No es solo el numero de registros, sino el tamaño de cada registro. Un SELECT * trae todos los datos, asi que lo mas posible es que el tamaño total de la consulta sea demasiado grande.

Y si es para una paginacion, lo mejor es hacer 2 consultas separadas:

1.- Para contar el numero total de registros:

SELECT COUNT(*) FROM tabla WHERE loquesea

2.- Para leer solo los registros que muestras por pagina:

SELECT * FROM tabla WHERE loquesea ORDER BY loquesea LIMIT primer_registro_a_mostrar, numero_de_registros_a_mostrar

Mas info: www.mysql.com/select

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 26/01/2005, 07:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar el script de paginación de Jpinedo o bien ver su código (usa las técnicas de COUNT() y LIMIT)

http://jpinedo.webcindario.com/scripts/paginator/

Un saludo,
  #9 (permalink)  
Antiguo 26/01/2005, 12:00
Avatar de Riso  
Fecha de Ingreso: junio-2004
Ubicación: Buenos Aires
Mensajes: 85
Antigüedad: 13 años, 6 meses
Puntos: 1
Bien, Modifique mi script para utilizar COUNT() y funciono perfecto.

Muchas gracias por sus respuestas.
__________________
SAludos, QSK RISO :cool:

Última edición por Riso; 26/01/2005 a las 12:06
  #10 (permalink)  
Antiguo 26/01/2005, 20:05
Avatar de Shevkorn  
Fecha de Ingreso: enero-2005
Ubicación: Trujillo
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 1
por que no utilizas LIMIT .... y no te cargues toda la BD :O
  #11 (permalink)  
Antiguo 27/01/2005, 05:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Shevkorn
por que no utilizas LIMIT .... y no te cargues toda la BD :O
Para "paginar" .. usando LIMIT .. necesitas también para tus rutinas de "paginado" conocer el n° de registros total .. para eso usando COUNT() se optimiza bastante el tema.

(revisa el script de paginado de Jpinedo que dejé el link)

Un saludo,
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 05:17.