Foros del Web » Programando para Internet » PHP »

Paginado: me limita solo a 10 registros

Estas en el tema de Paginado: me limita solo a 10 registros en el foro de PHP en Foros del Web. Hola! Estoy intentando paginar unos resultados de una consulta en PHP siguiendo un ejemplo que he visto en PHP en castellano, pero me limita la ...
  #1 (permalink)  
Antiguo 28/07/2009, 04:05
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Pregunta Paginado: me limita solo a 10 registros

Hola!

Estoy intentando paginar unos resultados de una consulta en PHP siguiendo un ejemplo que he visto en PHP en castellano, pero me limita la búsqueda a 10 registros, entiendo que lo que tengo mal es la consulta a la base de datos, pero no sé por qué, aquí dejo el código con las querys y la función por si alguien tiene tiempo y me puede ayudar:

Yo entiendo que con SELECT COUNT estoy extrayendo todos lo registros que hay y que después hago una SELECT normal para sacar los datos de 10 en 10, pero al final, cuando imprimo num_rows solo me aparecen 10 registros y al llamar a la función paginar, solo aparece una página.

Código PHP:
if(!isset($pag)) $pag 1;

$query_producto =
                        
"
                        SELECT COUNT (*)
                        FROM productos
                        WHERE id_relacion IN ("
.implode(",",$res_query).")
                        ORDER BY $orden
                        "
;
                        list(
$total) = mysql_fetch_row($query_producto);
                        
$tampag 10;
                        
$reg1 = ($pag-1) * $tampag;
                        
                        
$query_producto =
                        
"
                        SELECT *
                        FROM productos
                        WHERE id_relacion IN ("
.implode(",",$res_query).")
                        ORDER BY $orden
                        LIMIT $reg1, $tampag
                        "
;

                    
/******************************************************/
                    /* Funcion paginar
                     * actual:          Pagina actual
                     * total:           Total de registros
                     * por_pagina:      Registros por pagina
                     * enlace:          Texto del enlace
                     * Devuelve un texto que representa la paginacion
                     */
                    
function paginar($actual$total$por_pagina$enlace) {
                      
$total_paginas ceil($total/$por_pagina);
                      
$anterior $actual 1;
                      
$posterior $actual 1;
                      if (
$actual>1)
                        
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
                      else
                        
$texto "<b>&laquo;</b> ";
                      for (
$i=1$i<$actual$i++)
                        
$texto .= "<a href=\"$enlace$i\">$i</a> ";
                      
$texto .= "<b>$actual</b> ";
                      for (
$i=$actual+1$i<=$total_paginas$i++)
                        
$texto .= "<a href=\"$enlace$i\">$i</a> ";
                      if (
$actual<$total_paginas)
                        
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
                      else
                        
$texto .= "<b>&raquo;</b>";
                      return 
$texto;
                    }
                    
/******************************************************/

            
                    
$result_producto=@$conn->query($query_producto);
                    
$num_rows $result_producto->num_rows;
                    
                            echo 
"Total productos: ";
                            echo 
$num_rows;

echo 
paginar($pag$total$tampag"aquíurl****.php?pag="); 
P.S: he intentado también implementar PHPPaging, de Okram, pero no lo he conseguido, me daba error.
  #2 (permalink)  
Antiguo 28/07/2009, 04:16
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Lo que te importa para la paginación es la clausula limit

SELECT *
FROM productos
WHERE id_relacion IN (".implode(",",$res_query).")
ORDER BY $orden
LIMIT $reg1, $tampag

Te coge 10 resultados por lo siguiente: $tampag = 10; (está al principio del código). Si cambias el valor de esa variable cogerá más o menos resultados por página.

El select count no es necesario para paginar.
  #3 (permalink)  
Antiguo 28/07/2009, 04:24
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Gracias por contestar, Ronin46, el caso es que según tengo entendido para poder paginar primero tienes que hacer una query de donde extraes todos los datos (pongamos por ejemplo 120 registros) y después vuelves a hacer la query donde le dices cuántos registros quieres mostrar en la primera página, de ahí que en la segunda query le estoy diciendo que muestre 10, y como estamos en la página 1, pues del registro 1 al 10 ¿pero que ha pasado con los otros 110 registros? Es como si la segunda query pisara a la primera pero lo que he visto en ejemplos similares lo hacen así.
¿Alguna idea?
  #4 (permalink)  
Antiguo 28/07/2009, 04:53
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Con la cláusula limit es con la que vas recorriendo los registros de 10 en 10 (en este caso), por lo que tendrás que ir variando las variables del limit $reg1, $tampag.

Por si te sirve para comparar con lo que tienes: http://www.desarrolloweb.com/articulos/1035.php

Si sigues teniendo problemas ya te lo miro con más calma cuando esté en casa.
  #5 (permalink)  
Antiguo 28/07/2009, 06:06
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Hola Ronin, estaba observando el código de desarrolloweb pero el ejemplo que tienen de muestra no les funciona
En todo caso lo estoy comparando...
  #6 (permalink)  
Antiguo 28/07/2009, 10:14
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Bueno, hasta ahora lo único que he conseguido es que si aumento el valor de $pag, por ejemplo $pag=3 pues resulta que me saca la navegación hacia atrás, osea las páginas anteriores (la 1 y 2) pero no las páginas siguientes...

¿Alguien que pueda ayudarme con esto?
  #7 (permalink)  
Antiguo 28/07/2009, 11:17
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Que raro que no te funcione el del link...

Bueno, le estuve echando un ojo a tu código y no le veo nada, ¿Algún error en especial?
  #8 (permalink)  
Antiguo 28/07/2009, 12:59
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Pues sí, no me había fijado que una vez que saca los resultados no muestra el resto de la página, como si hubiera algún error de sintaxis, pero si quito la función de paginado salen todo bien...

Una pregunta... ¿no debería poder hacer un echo de $total?
He hecho un echo de cada uno de los valores de la función para ver si están llegando y $pag y $tampag si llegan pero $total no me imprime nada...

Última edición por GatorV; 28/07/2009 a las 13:18
  #9 (permalink)  
Antiguo 28/07/2009, 13:15
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Supongo que $res_query tiene el valor que quieres.

Prueba con un "echo $total[0];", ya que $total debiera ser un array.

El echo de $total es simplemente para ver si tiene valor, luego, ya depende de ti si quieres mostrar en pantalla o no cuando lo tengas bien esa información.
  #10 (permalink)  
Antiguo 28/07/2009, 13:23
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Sí, $res_query tiene el valor correcto, el echo $total[0] no me devuelve nada.
El tema de que se quedaba una parte de la página en blanco, ya lo he solucionado, era un problema de sintaxis de un SELECT que había más abajo....

Si hago un var_dump de $total me devuelve NULL
  #11 (permalink)  
Antiguo 28/07/2009, 13:40
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

SELECT COUNT (*)
FROM productos
WHERE id_relacion IN (".implode(",",$res_query).")
ORDER BY $orden

Prueba a hacer esa consulta directamente en MySQL sustituyendo las variables por los valores a mano, y a ver que te devuelve.

Si da error la consulta cambia el "IN" por "=", no debiera afectar por lo que leo en el manual, pero nunca lo usé, así que mejor asegurar por lo conocido xD.

P.D: El order by en esa consulta se puede quitar, no tiene sentido.
  #12 (permalink)  
Antiguo 28/07/2009, 13:44
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Bueno, más fácil que eso, hice un var_dump de $query_producto para comprobar si hacía bien la consulta, y los valores que salen son los correctos:

string(153) " SELECT * FROM productos WHERE id_relacion IN (25,26,28,29,30,32,36,37,220) ORDER BY nombre_producto ASC LIMIT 0, 10 "

(Gracias por tu tiempo, Ronin46)

No había visto lo del ORDER BY repetido, lo quitaré.
  #13 (permalink)  
Antiguo 28/07/2009, 14:02
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

lo del ORDER BY no es por repetido, si no porque si vas a contar, tanto te da, que más da cual sea el orden. el resultado va a ser el mismo.

P.D: comprueba la otra consulta, la que tiene el count, que es la que realmente importa ya que de ella obtienes $total.
  #14 (permalink)  
Antiguo 28/07/2009, 14:03
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

También sale bien:
string(108) " SELECT COUNT (*) FROM productos WHERE id_relacion IN (25,26,28,29,30,32,36,37,220) "


He probado a darle un valor a $total=143 (que es el resultado que debería salir) y así funciona, con lo que deduzco que es éste valor el que no está obteniendo bien

Última edición por Anastasiaphp; 28/07/2009 a las 14:22
  #15 (permalink)  
Antiguo 28/07/2009, 16:02
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Leñes, esto ya se había convertido en algo personal

Te falta antes de

list($total) = mysql_fetch_row($query_producto);

un

$query_producto = @mysql_query($query_producto) or die (mysql_error());

El resto dejalo igual y después de

$total = mysql_fetch_row($query_producto);

Haz un

echo "Total: " . $total[0];

Ah, y no sé si tendrás algún error_reporting por algún lado tal que error_reporting(0), te lo comento porque si es así para hacer las pruebas mejor deshabilitarlo.

Última edición por Ronin46; 28/07/2009 a las 16:08
  #16 (permalink)  
Antiguo 29/07/2009, 01:37
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Pues tampoco

Me da un error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) FROM productos WHERE id_relacion IN (25,26,28,29,30,32,36,37,220)' at line 1

Y eliminando la parte de or die (mysql_error()) $total[0] no me da ningún resultado.

Estoy pensando darle otra oportunidad a lo que me enviaste de desarrolloweb, a ver si lo consigo...

Me olvidaba... no tengo ningún error_reporting...
  #17 (permalink)  
Antiguo 29/07/2009, 08:05
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Te falta antes de

list($total) = mysql_fetch_row($query_producto);

un

$query_producto = @mysql_query($query_producto) or die (mysql_error());

El resto dejalo igual y después de

$total = mysql_fetch_row($query_producto);

Haz un

echo "Total: " . $total[0];

Hasta aquí es como te dije en el anterior post y la consulta, que es lo que cambia ahora, sería:
SELECT COUNT(*)
FROM productos
WHERE id_relacion IN (".implode(",",$res_query).")
ORDER BY $orden

Fijate que COUNT(*) va todo junto, sin espacio entre el count y el (*)
  #18 (permalink)  
Antiguo 29/07/2009, 09:39
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

¡Que gracia! Poniendo como me dices me sale:

No database selected


Por lo menos no da error....
  #19 (permalink)  
Antiguo 29/07/2009, 10:08
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

joer....

¡Pero si estoy probando esa misma consulta en mi PC y va bien!

A favor, pon el código tal y como lo tienes ahora... porque después de darle tantas vueltas ya no sé como está.
  #20 (permalink)  
Antiguo 29/07/2009, 12:50
Avatar de ix0ye  
Fecha de Ingreso: julio-2009
Ubicación: queretaro
Mensajes: 41
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Paginado: me limita solo a 10 registros

hola chicos, pues veo que tienen mucho tiempo luchando con ello y yo estoy a favor de romperse la cabeza hasta que algo te sale, pero muchas veces el tiempo no es tu mejor amigo.

Por ello, en un problema muy similar a este enconte PHPPaging que te permite paginar super facil y rapido

de todas manera aqui esta el link por si les ineteresa

ojala les funcione

phppaging . phperu . net / descargas /
  #21 (permalink)  
Antiguo 30/07/2009, 05:56
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Ahí va el código... (yo lo he mirado tantas veces, que ya no sé qué hacerle...)


Código PHP:
if($num_rows_r){
                        
$query_producto =
                        
"
                        SELECT COUNT(*)
                        FROM productos
                        WHERE id_relacion IN ("
.implode(",",$res_query).")
                        "
;
                        
$query_producto = @mysql_query($query_producto) or die (mysql_error());
                        list(
$total) = mysql_fetch_row($query_producto);
                        
$tampag 10;
                        
$reg1 = ($pag-1) * $tampag;
                                                
                        
$query_producto =
                        
"
                        SELECT *
                        FROM productos
                        WHERE id_relacion IN ("
.implode(",",$res_query).")
                        ORDER BY $orden
                        LIMIT $reg1, $tampag
                        "
;
                        
                    }    
                    
//var_dump($query_producto);
                    //$total=143;
                    //echo "Total: " . $total[0];
                    //echo $total;
                    //echo $reg1;
                    
                    /******************************************************/
                    /* Funcion paginar
                     * actual:          Pagina actual
                     * total:           Total de registros
                     * por_pagina:      Registros por pagina
                     * enlace:          Texto del enlace
                     * Devuelve un texto que representa la paginacion
                     */
                    
function paginar($actual$total$por_pagina$enlace) {
                      
$total_paginas ceil($total/$por_pagina);
                      
$anterior $actual 1;
                      
$posterior $actual 1;
                      if (
$actual>1)
                        
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
                      else
                        
$texto "<b>&laquo;</b> ";
                      for (
$i=1$i<$actual$i++)
                        
$texto .= "<a href=\"$enlace$i\">$i</a> ";
                      
$texto .= "<b>$actual</b> ";
                      for (
$i=$actual+1$i<=$total_paginas$i++)
                        
$texto .= "<a href=\"$enlace$i\">$i</a> ";
                      if (
$actual<$total_paginas)
                        
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
                      else
                        
$texto .= "<b>&raquo;</b>";
                      return 
$texto;
                    }
                    
/******************************************************/
                    
            
                                
                            ///////
                            
$url=$PHP_SELF "?" $_SERVER['QUERY_STRING'];
                                echo 
paginar($pag$total$tampag,$url);
                                echo 
"<br /><br />";
                            
//////
                            
                    
$result_producto=@$conn->query($query_producto);
                    
$num_rows $result_producto->num_rows;
                            echo 
"Total productos: ";
                            echo 
$num_rows

ix0ye: ya había probado phpPaging y también me da problemas, por eso he optado por este script que se supone es más manejable
  #22 (permalink)  
Antiguo 30/07/2009, 08:28
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

He probado a hacer esta consulta sencilla y no funciona, no me da ningún resultado
Me vuelve a salir: No database selected


Código PHP:
$query_producto =
"
SELECT COUNT(*)
FROM productos
"
;
$query_producto = @mysql_query($query_producto) or die (mysql_error());
list(
$total) = mysql_fetch_row($query_producto);
echo 
"Total: " $total[0]; 

Última edición por Anastasiaphp; 30/07/2009 a las 08:41 Razón: Corregido código y resultado
  #23 (permalink)  
Antiguo 30/07/2009, 09:24
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

leñes, ¿te estás conectando a la base de datos...?

Resumiendo, ¿estás usando mysql_connect y mysql_select_db en algún lado?
  #24 (permalink)  
Antiguo 30/07/2009, 09:48
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Paginado: me limita solo a 10 registros

Verifica que estes cambiando el valor de la pagina, y que en el limit esté:

LIMIT ($pagina*$tampag), $tampag

De esta forma:
si pagina = 0 quedaria LIMIT 0, 10

si pagina = 1 quedaria LIMIT 10, 10

pagina = 2 quedaria LIMIT 20, 10

Ves esa es la idea del limit, muestra a partir de una determinada fila un numero de filas.

Revisa el valor de $pagina, esa es la variable fundamental de la paginacion.

Saludos!!
  #25 (permalink)  
Antiguo 30/07/2009, 15:07
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Arg! Ronin, tenías razón, estoy haciendo mal la conexión a la base de datos (me muero de vergüenza), aún así, una vez hecha la conexión, llegamos al primer punto, el echo de $total[0]; no me muestra nada...

Pongo el código resumido hasta ahora:

Código PHP:
if(!isset($pag)){ $pag 1;}

$conn db_connect();
$query_producto =
"
SELECT COUNT(*)
FROM productos
"
;

$query_producto =@$conn->query($query_producto) or die (mysql_error());
list(
$total) = mysql_fetch_row($query_producto);

$tampag 10;
$reg1 = ($pag-1) * $tampag;

$query_producto =
"
SELECT *
FROM productos
LIMIT $reg1, $tampag
"
;


echo 
"Total: " $total[0];  


/******************************************************/
/* Funcion paginar
* actual:          Pagina actual
* total:           Total de registros
* por_pagina:      Registros por pagina
* enlace:          Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual$total$por_pagina$enlace) {
$total_paginas ceil($total/$por_pagina);
$anterior $actual 1;
$posterior $actual 1;
if (
$actual>1)
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
else
$texto "<b>&laquo;</b> ";
for (
$i=1$i<$actual$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for (
$i=$actual+1$i<=$total_paginas$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if (
$actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return 
$texto;
}
/******************************************************/

///////
$url=$PHP_SELF "?" $_SERVER['QUERY_STRING'];
echo 
paginar($pag$total$tampag,$url);
echo 
"<br /><br />";
//////


$result_producto=@$conn->query($query_producto);
$num_rows $result_producto->num_rows;

echo 
"Total productos: ";
echo 
$num_rows

Rusinho: estos valores están puestos en la segunda query, gracias de todos modos.

Ah! por si os lo preguntáis: sí, existe la base de datos y tiene datos

Última edición por Anastasiaphp; 30/07/2009 a las 15:22
  #26 (permalink)  
Antiguo 30/07/2009, 15:41
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Adapte tu código un poco a mi base de datos, quedando de la siguiente forma:
Código PHP:
$query_producto =
"
SELECT COUNT(*)
FROM tblnoticiario
"
;

$query_producto =@mysql_query($query_producto$conex) or die (mysql_error());
list(
$total) = mysql_fetch_row($query_producto);
echo 
"total " $total
Con $total[0] a mi tampoco me mostraba la información correcta, pero con $total si.

Si sigue sin funcionarte, me da que estamos perdiendo el tiempo centrándonos en esa parte.
  #27 (permalink)  
Antiguo 31/07/2009, 14:27
Avatar de Anastasiaphp  
Fecha de Ingreso: junio-2006
Ubicación: El patio de mi casa
Mensajes: 196
Antigüedad: 17 años, 10 meses
Puntos: 3
Respuesta: Paginado: me limita solo a 10 registros

Pues tampoco ha funcionado pero he conseguido que salga haciéndolo de otra manera ¡¡¡BIEEEN!!! No sé si es muy elegante o no pero funciona y me hace bien el paginado , aún me queda limpiar alguna cosa de la url pero YA ESTÁ!!!

Ahí dejo todo por si alguien lo necesita...
Código PHP:
$conn db_connect();
$query_producto "SELECT * FROM productos WHERE id_relacion IN (".implode(",",$res_query).")";
$result_total=@$conn->query($query_producto);
$total $result_total->num_rows;

$tampag 10;
$reg1 = ($pag-1) * $tampag;

//echo $total;

$query_producto =
"
SELECT *
FROM productos
WHERE id_relacion IN ("
.implode(",",$res_query).")
ORDER BY $orden
LIMIT $reg1, $tampag
"
;

}    

/******************************************************/
/* Funcion paginar
* actual:          Pagina actual
* total:           Total de registros
* por_pagina:      Registros por pagina
* enlace:          Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual$total$por_pagina$enlace) {
$total_paginas ceil($total/$por_pagina);
$anterior $actual 1;
$posterior $actual 1;
if (
$actual>1)
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
else
$texto "<b>&laquo;</b> ";
for (
$i=1$i<$actual$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for (
$i=$actual+1$i<=$total_paginas$i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if (
$actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return 
$texto;
}
/******************************************************/

///////
$url=$PHP_SELF "?" $_SERVER['QUERY_STRING'] . "&pag=";
echo 
paginar($pag$total$tampag$url);
echo 
"<br /><br />";
////// 
Ronin, gracias por el apoyo, a veces está bien que alguien esté ahí dándote ideas para llegar a la solución... te envío karma (hasta hace una semana no sabía que existía)
  #28 (permalink)  
Antiguo 31/07/2009, 15:31
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Paginado: me limita solo a 10 registros

Bueno, me alegro que te funcionara, al final por lo que veo lo que hiciste fue hacer una selección normal, y en vez de "contar" con mysql "contaste" con PHP, es otra forma de hacerlo e igual de válida.

Hablando de temas de optimización no sé que será más rápido. pero bueno, funciona que es lo que importa.

P.D: me deja medio mosqueado que no te funcione con Count(*), sobre todo viendo que el único cambio que vi en el último código fue simplemente la consulta.
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 09:56.