Foros del Web » Programando para Internet » PHP »

Paginar Vector de Resultados en PHP

Estas en el tema de Paginar Vector de Resultados en PHP en el foro de PHP en Foros del Web. Hace un tiempo me surgió el problema de paginar un vector (Array) de resultados de una búsqueda, por lo que busqué la forma de crear ...
  #1 (permalink)  
Antiguo 07/12/2008, 19:57
 
Fecha de Ingreso: diciembre-2008
Mensajes: 8
Antigüedad: 15 años, 4 meses
Puntos: 0
Paginar Vector de Resultados en PHP

Hace un tiempo me surgió el problema de paginar un vector (Array) de resultados de una búsqueda, por lo que busqué la forma de crear una función que me permitiera listar los items correspondientes, pasandole por parámetros el vector en cuestión, el límite de resultados a mostrar y la página solicitada.

He aquí mi solución (es una base, que necesita ser pulida, eso les dejo a ustedes Guiño )

paginar.php

Código PHP:
function paginar($v$l$p) { 
Primero que nada definimos la función junto con las variables que se han de pasar como parámetro, ahora bien, necesitamos saber cuales son las condiciones de inicio de nuestro paginador, tales como la cantidad de páginas a mostrar, en función de la longitud del vector y del límite de items a desplegar:

Código PHP:
// DEFINIMOS LA CANTIDAD DE PÁGINAS 
$paginas ceil(count($v) / $l); 
Ahora bien, si queremos mostrar cada item del vector $v necesitaremos recorrerlo con un bucle, pero... ¿desde dónde empezaríamos a mostrar y hasta dónde? Para ello necesitamos definir las condiciones de nuestro bucle recorredor como sigue:

Código PHP:
// CONDICION DE INICIO 
$inicio = ($p-1)*$l
       
// CONDICION DE FINAL 
$final $p*$l

Y ya estamos listos para empezar a recorrer el vector mostrando cada resultado dentro de un div de id="item" dentro del div de resultados. Debemos tener en cuenta que, si no existiera el item i-ésimo dentro del vector $v tenemos que dejar de listar items:

Código PHP:
// MOSTRAMOS LOS ITEMS RESPECTIVOS 
      
echo '<div id="resultados">'
      for (
$i=$inicio$i<$final$i++) { 
         if (isset(
$v[$i])) 
            echo 
"<div id=\"item\">$i.- $v[$i]</div>"
         else  
            break; 
      } 
      echo 
'</div>'

Listo, tenemos los resultados correspondientes a la página $p, pero necesitaríamos mostrar el total de páginas a modo de menú de hipervínculos para poder navegar entre los ítems. Para ello comprobaremos si nos encontramos en la primera pagina para no mostrar "Página anterior" o en la última para no mostrar "Página siguiente", además de no crear un vínculo a la misma página:

Código PHP:

// LISTAMOS LAS PÁGINAS 
      
echo '<div id="paginas">'
      if (
$p>1
         echo 
"<a href=\"index.php?p=" . ($p-1) . "\">P&aacute;gina Anterior</a>&nbsp;-&nbsp;"
       
      for (
$i=1$i<=$paginas$i++) { 
         if (
$i == $p
            echo 
"<strong>$i</strong>&nbsp;"
         else  
            echo 
"<a href=\"index.php?p=$i\">$i</a>&nbsp;"
      } 
       
      if (
$p<$paginas
         echo 
"&nbsp;-&nbsp;<a href=\"index.php?p=" . ($p+1) . "\">P&aacute;gina Siguiente&nbsp;</a>"
      echo 
'</div>'
return; 
   } 
Eso sería todo, para llamar a la función simplemente realizamos:

index.php


Código PHP:
<?php 
   $vector 
= array("hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau""hola""chau" ); 
    
   require (
"paginar.php"); 
    
   if (isset(
$_GET[p])) 
      
$p $_GET[p]; 
   else  
      
$p=1
       
   
paginar($vector10$p); 
?>
Espero que les sirva de base para un desarrollo más complejo, saludos!
Pueden ver el ejemplo funcionando en http://www.reweb.com.ar/labs/paginarVector/
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 03:15.