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\">«</a> ";
else
$texto = "<b>«</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\">»</a>";
else
$texto .= "<b>»</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=");