Paginar resultados
Hola,
¿Como puedo paginar los resultados de una consulta (busqueda) a la MySQL?
Un saludo y gracias.
¿Como puedo paginar los resultados de una consulta (busqueda) a la MySQL?
Un saludo y gracias.
<?php
include('../lib/conectabd.php');
$campo = 'clave_conta';
$valor = '0';
$seleccion = "WHERE ".$campo.' = '.$valor;
$sql = "SELECT * FROM bienes ".$seleccion;
$conexion = mysql_query($sql);
$total_encontrados = mysql_affected_rows();
$registros_x_pagina = 20;
$total_paginas = round($total_encontrados/$registros_x_pagina);
echo 'Registros Encontrados: '.$total_encontrados.'<br>';
echo 'TOTAL PAGINAS '.$total_paginas.'<br><br>';
if(!$_GET['pagina_actual']){
$pagina_actual = 0;
}
else{
$pagina_actual = $_GET['pagina_actual'];
}
$sql = "SELECT * FROM bienes ".$seleccion." LIMIT ".$pagina_actual.",".$registros_x_pagina;
$conexion = mysql_query($sql);
$resultado = mysql_fetch_array($conexion);
$contador = 1;
do{
echo $contador.' .- '.$resultado[marbete].' - ';
echo $resultado[descripcion].'<br>';
$contador++;
}while($resultado = mysql_fetch_array($conexion));
?>
<table width="694" border="0" align="center">
<tr>
<td width="70">
<div align="center">
<?php
if($pagina_actual != 0){
$pagina_anterior = $pagina_actual - 1;
echo '<a href="paginar.php?pagina_actual='.$pagina_anterior.'">Anterior</a>';
}
?>
</div>
</td>
<td width="494"> <div align="center">
<?php
for($x=0;$x<$total_paginas;$x++){
echo '<a href="paginar.php?pagina_actual='.$x.'">'.$x.'</a> -';
}
?>
</div></td>
<td width="64">
<div align="center">
<?php
if($pagina_actual != $total_paginas){
$pagina_siguiente = $pagina_actual + 1;
echo '<a href="paginar.php?pagina_actual='.$pagina_siguiente.'">Siguiente</a>';
}
?>
</div></td>
</tr>
</table>
Lo he probado con el siguiente c贸digo y me muestra el "siguiente" "atras" y los numeros correctos de las paginas segun los resultados pero cuando pulso sobre uno de estos me habre la pagina vacia, digamos que no reparte los resultados por las paginas.
$allEntries = $num;
$limitStart = 0;
$limitBy = 2;
$lastPageEntries = ($allEntries % $limitBy);
$allPages = round(($allEntries - $lastPageEntries) / $limitBy)+1;
if($lastPageEntries>0 and $allPages==0) {$allPages=$allPages+1;}
$thisPage = round(($limitStart+$limitBy) / $limitBy);
print "<b><br>Pagina ".$thisPage." a ".$allPages."<br><br></b>";
if($allEntries > $limitBy)
{
print "<b>Paginas:</b> ";
for($entryNr=1; $entryNr<=$allPages; $entryNr++)
{
$startPage = ($entryNr * $limitBy) - $limitBy;
if($thisPage!=$entryNr){ print "<b><a href="".$PHP_SELF."?limitStart=".$startPage."">".$entryNr."</a></b> "; }
else{print "<b>".$entryNr."</b> ";}
}
}
$startNext = $thisPage * $limitBy;
if($startNext < ($allPages * $limitBy) and $allEntries > $limitBy)
{print " <b><a href="".$PHP_SELF."?limitStart=".$startNext."">Siguiente</a></b> ";}
$allEntries = $num;
$limitStart = 0;
$limitBy = 2;
$lastPageEntries = ($allEntries % $limitBy);
$allPages = round(($allEntries - $lastPageEntries) / $limitBy)+1;
if($lastPageEntries>0 and $allPages==0) {$allPages=$allPages+1;}
$thisPage = round(($limitStart+$limitBy) / $limitBy);
print "<b><br>Pagina ".$thisPage." a ".$allPages."<br><br></b>";
if($allEntries > $limitBy)
{
print "<b>Paginas:</b> ";
for($entryNr=1; $entryNr<=$allPages; $entryNr++)
{
$startPage = ($entryNr * $limitBy) - $limitBy;
if($thisPage!=$entryNr){ print "<b><a href="".$PHP_SELF."?limitStart=".$startPage."">".$entryNr."</a></b> "; }
else{print "<b>".$entryNr."</b> ";}
}
}
$startNext = $thisPage * $limitBy;
if($startNext < ($allPages * $limitBy) and $allEntries > $limitBy)
{print " <b><a href="".$PHP_SELF."?limitStart=".$startNext."">Siguiente</a></b> ";}
Muestra los valores de las variables $limiStart, $startNext y $allPages para ver cu谩l de las variables no mantiene el valor correcto.
Igual el problema es la inicializaci贸n de $limitStart = 0; porque siempre toma ese valor aunque tu le pases otro valor distinto.
Igual el problema es la inicializaci贸n de $limitStart = 0; porque siempre toma ese valor aunque tu le pases otro valor distinto.
Hola,
Yo suelo utilizar una funci贸n que me he creado, con dos par谩metros, la p谩gina que vas incrementando cada vez que la llamas y el n煤mero de registros por p谩gina, de esta forma al hacer la consulta puedes utilizas la cla煤sula LIMIT para mostrar s贸lo aquellos resultados contenidos en la p谩gina.
Espero que te sirva.
Hasta pronto.
Yo suelo utilizar una funci贸n que me he creado, con dos par谩metros, la p谩gina que vas incrementando cada vez que la llamas y el n煤mero de registros por p谩gina, de esta forma al hacer la consulta puedes utilizas la cla煤sula LIMIT para mostrar s贸lo aquellos resultados contenidos en la p谩gina.
Espero que te sirva.
Hasta pronto.
Hola Silver soy Falkken en otros foros como el de webestilo o el de maestros del web yo hice la misma pregunta que tu, acabo de plantearles una soluci贸n en este mismo foro a programacion.net para que veamos todos el c贸digo y a partir de ah铆 cada caso espec铆fico lo preguntemos aqu铆 en el foro. Pero a ver si nos son buenos y acaban el tuto del buscador con una buena paginaci贸n. Sino lo est谩n dejando a medias. Y no parecen de esos mas bien parecen profecionales a ver que tal responden. Un saludo a todos
