Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/02/2014, 10:33
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años, 3 meses
Puntos: 84
Respuesta: Paguinación de un archivo php

Código PHP:
Ver original
  1. <?php
  2.         return  $this->surroundBefore;
  3.     }
  4.    
  5.     /*
  6.      * calcula las paginas circundantes posteriores/surroundAfter
  7.      */
  8.     public  function    surroundPagesAfter()
  9.     {  
  10.         //suma a la pagina actual las paginas configuradas para mostrar despues
  11.         $pageAfter  =   $this->page   +   1;
  12.        
  13.         //comienza a crear tantos botones como paginas sean posibles
  14.         for($i=$pageAfter, $ji=1; $i < $this->totalPages AND $ji<=$this->pagesAfter; $i++ AND $ji++)
  15.         {
  16.             if($i>$this->page)
  17.             {
  18.                 array_push($this->surroundAfter,   array(
  19.                                                                                         'page'  =>$i,
  20.                                                                                         'url'      =>$this->createURL($this->url, $this->id, $i)
  21.                                                                                      ));
  22.             }
  23.         }
  24.        
  25.         //asigna false para que no muestre botones posteriores
  26.         if(empty($this->surroundAfter))
  27.         {
  28.             $this->surroundAfter   =   FALSE;
  29.         }
  30.        
  31.         return  $this->surroundAfter;
  32.     }
  33.    
  34.     /*
  35.      * crea el boton anterior/beforeButton
  36.      */
  37.     public  function    beforeButtons()
  38.     {
  39.         //resta 1 a la pagina actual
  40.         $pageBefore  =   ceil($this->page  -   1);
  41.        
  42.         //si el resultado anterior indica que no da un valor negativo
  43.         if($pageBefore >=0)
  44.         {
  45.             $this->beforeButton  =   array(
  46.                                                                 'page'  =>$pageBefore,
  47.                                                                 'url'      =>$this->createURL($this->url, $this->id, $pageBefore)
  48.                                                                );
  49.         }
  50.        
  51.         //sino asigna false para no mostrar boton anterior
  52.         else
  53.       {
  54.             $this->beforeButton  =   FALSE;
  55.         }
  56.      
  57.         return $this->beforeButton;
  58.     }
  59.    
  60.     /*
  61.      * crea el boton siguiente/afterButton
  62.      */
  63.     public  function    afterButtons()
  64.     {  
  65.         //suma a la pagina actual 1
  66.         $afterButton    =   $this->page   +   1;
  67.        
  68.         //si el resultado anterior es menor o igual a las paginas totales posibles
  69.         if($afterButton <  $this->totalPages)
  70.         {
  71.             $this->afterButton  =   array(
  72.                                                              'page'  =>$afterButton,
  73.                                                              'url'      =>$this->createURL($this->url, $this->id, $afterButton)
  74.                                                             );
  75.         }
  76.         else
  77.         {
  78.             $this->afterButton  =   FALSE;
  79.         }
  80.        
  81.         return  $this->afterButton;
  82.     }
  83.    
  84.     /*
  85.      * crea el array definitivo con todos los valores necesarios para todos los botones/result
  86.      */
  87.     public  function    paginator()
  88.     {
  89.         //comprueba que la pagina que ha enviado el usuario no sea mayor que el total de resultados posibles
  90.         //tampoco que sea inferior a 0
  91.         if($this->page  <=  $this->totalPages   AND $this->page>=0)
  92.         {
  93.             $this->result   =   array(
  94.                                                         'page'=>$this->page,
  95.                                                         'surround_before'   =>$this->surroundPagesBefore(),
  96.                                                         'surround_after'    =>$this->surroundPagesAfter(),
  97.                                                         'before_button' =>$this->beforeButtons(),
  98.                                                         'after_button'  =>$this->afterButtons(),
  99.                                                         'total_pages'   =>$this->totalPages,
  100.                                                         'current_pages' =>$this->currentPages,
  101.                                                         'total_results_set' =>$this->totalResultsSet,
  102.                                                         'limit_since' =>$this->currentPages,
  103.                                                         'limit_result_set'  =>$this->resultsPage
  104.                                                     );
  105.                                                                                
  106.         }
  107.        
  108.         //si el usuario intentara romper el paginado poniendo páginas falsas entonces asigna FALSE
  109.         else
  110.       {
  111.             $this->result   =   FALSE;
  112.         }
  113.        
  114.         return  $this->result;
  115.     }
  116.  
  117.     /*
  118.      * busca y sustituye un patron dentro de una URL para
  119.      * eliminar ese patron y sustituirlo para crear una nueva URL
  120.      * evitando acumular paginaciones de un mismo objeto en la URL
  121.      *
  122.      * evita, por ejemplo:          ?page_camisetas=1&page_camisetas=2&page_camisetas=3
  123.      */
  124.     public  function    createURL($url, $id, $page)
  125.     {
  126.         //si el identificador no se encuentra en la url
  127.         if(substr_count($url, $id)  ==0)
  128.         {
  129.             //agrega al final de la url el identificador y el valor que le corresponde
  130.             $url  =   $url."&".$id."=".$page;
  131.         }
  132.        
  133.         //sino busca y reemplaza el identificador en la url por su nuevo valor
  134.         else
  135.       {
  136.           $url  =   preg_replace("/(".$id."=[[:digit:]]*)/i", $id."=".$page, $url);
  137.       }
  138.        
  139.         return  $url;
  140.     }
  141. }
  142. ?>

No olvides quitar del final del primer post que inicia la clase el cierre de PHP "?>"

y del segundo post que termina la clase la apertura de PHP "<?php" para así tener todo el código sin aperturas y cierres de PHP entre medias de la clase.
__________________
Ayúdame a hacerlo por mi mismo.