PHP - Paginar resultado de busqueda

 
Vista:

Paginar resultado de busqueda

Publicado por edu (9 intervenciones) el 28/08/2001 19:47:48
Alguien sabe donde encontrar un ejemplo de paginacion de resultado de búsqueda, al estilo de los buscadores.

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Paginar resultado de busqueda

Publicado por Fran (42 intervenciones) el 29/08/2001 11:04:34
Bien, te pongo el codigo del Select:

Select * from tabla LIMIT offset, rows

offset = donde quieres que empieze

rows = numero de columnas

por eso mismo si quieres que te muestre 5 resultados de la búsqueda seria

Select * from tabla where busqueda="Algo" LIMIT 1,5

Eso te mostraria 5 resultados empezando por el primer resultado encontrado, para los botones anterior y siguiente solo tienes que modificar el LIMIT a -5 y +5 siempre teniendo presente que no te salgas de los resultados de la consulta.

Espero haber ayudado.

Un saludo.

Fran
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paginar resultado de busqueda

Publicado por edu (9 intervenciones) el 29/08/2001 12:10:26
Para la 1ª paginacion esta bien, pero para la 2ª,3ª... paginación como le digo que continue a partir del registro x.

Por ejemplo:
1ª pagina: del registro 1 al 5 => select * from tabla limit 5
2ª pagina: del registro 6 al 10 => ?
3ª pagina: del registro 6 al 10 => ?

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paginar resultado de busqueda

Publicado por Fran (42 intervenciones) el 29/08/2001 16:17:39
Como ya te he dicho tienes dos variables en LIMIT

offset = donde quieres que empieze

rows = numero de registros que quieres que saque

aL iniciar offset siempre tiene que valer 1, asi que tienes que comprovarlo.

if($offset==0)
{
$offset=1;
}

en siguiente, si quieres que salte de 5 en 5 valdra 6, que es las suma de:

$salto = $offset + $limite;

por supuesto $limite vale siempre 5

Y en anterior sera la resta:

$salto = $offset - $limite;

asi que solo tienes que hacer:

Select * from tabla where busqueda="Algo" LIMIT $salto,$limite

Con este metodo ,tambien se puede hacer lo del numero de paginas, aunque eso es un poco mas complicado, te dejo que lo pienses que seguro que lo sacas, solo tienes que pensarlo un poco.

Y tambien $offset y $Limite pueden ser la misma variable solo tienes que hacer:

$salto = $salto + $limite;

Y $limite puedes hacerla una constante para que el usuario decida cuantos resultados quiere que le saque por pagina.

Como veras se puede depurar todo lo que quieras ;-))

Espero haber ayudado.

Un saludo.

Fran.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paginar resultado de busqueda

Publicado por Marisol (6 intervenciones) el 31/08/2001 17:43:57
Hola,hace unos dias tb tenia ese problema y busque aqui en los foroso y encontre el sigte codigo, claro debes adaptarlo a tu aplicacion pero es mas que nada cambiar nombres de variables y esas cosas
espero y te sirva , a mi me ha funcionado super bien..
saludos Marisol
* esto lo puse entre las etiquetas head
<?
if (empty($numreg)) {
$numreg = 0;
}
?>

*esto lo puse donde quiero que se liste la informacion
<?
$link = mysql_connect(host, userN, passW);
mysql_select_db(baseD, $link);
$SQL = "SELECT * FROM Tabla";
$result = mysql_query($SQL, $link);
$Total = mysql_num_rows($result);
$result = mysql_query($SQL . " LIMIT $numreg, 8", $link);
$Numpag = ceil($Total/8);
if ($row = mysql_fetch_array($result)) {
do {
?>
//codigo a repetir...impresión de datos..
<?
}while ($row = mysql_fetch_array($result));
}
else{
//¡No se ha encontrado ningun registro!
}
mysql_close($link);
?>

*y por ultimo, esto lo puse al final, para mostrar el numero de pagina...

<?
$paginas = "";
for ($i=0; $i<$Numpag; $i++) {
if ($numreg==(8*$i)) {
$paginas = $paginas .($i+1) . "\n";
if ((8*$i+8)<$Total) {
$next = "<A HREF=\"pagina_actual.php4?numreg=" . (8*$i+8) . "\">Next</A>\n";
}
else {
$next = "";
}
}
else {
$paginas = $p
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Paginar resultado de busqueda

Publicado por edu (9 intervenciones) el 31/08/2001 17:52:56
Si te gusta esta funcion generica para mostrar lo tipico de:
Page Ant. 1 2 3 4 5 6 ... Page. Sig.
al final de un resultado de busqueda. Ahi va:
function navegadordepaginas($pagina_actual,$num_registros,$registrosporpagina,$nombre_pagina,
$color_fondo="white",$color_primerplano="black",
$mostrartotalencontrados,$textototalencontrados){

$paginas = @intval($num_registros / $registrosporpagina);
if(@($num_registros % $registrosporpagina) > 0 ){
$paginas++;
}

echo "<table border='0' cellspacing='0' width='100%'>
<tr><td width='100%' bgcolor='" . $color_fondo . "'><p align='center'>";

//Pagina Anterior
if( $pagina_actual != 1){
echo " <a href='" .$nombre_pagina . "pagina_actual=" . ($pagina_actual-1) .
"'><font color='" . $color_primerplano . "'>Ant</font></a> ";
}

//Navegación entre páginas
for($i=1;$i<=$paginas;$i++){

if($i==$pagina_actual){
echo " <b>".$i ."</b>";
}
else{
echo " <a href='" . $nombre_pagina . "pagina_actual=" . $i .
"'><font color='" . $color_primerplano . "'>" . $i . "</font></a>";
}
}
//Pagina Siguiente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar