Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2009, 22:12
Avatar de acoevil
acoevil
 
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 15 años, 9 meses
Puntos: 32
[APORTE] Paginacion de resultados sencilla - PaginaEvil

Hola quetal espero les sirva esta sencilla clase llamanda PaginaEvil que cree para paginar los resultados de las consultas SQL. Espero les se a util.
  • Ademas tiene una hoja de estilos para personalizar el paginador


Código PHP:
class PaginaEvil{
    
    /*************************
    *Nombre  : PaginaEvil
    *Desarrollado por: acoevil
    *correo: [email protected]
    *Version :1.0 Beta
    *para: Foros del web
    **************************
    Modo de uso:
    1: Se realiza un require_once() al archivo .php que contiene la clase
        require_once(PaginaEvil);
        
    
    3: Realizamos la consulta SQL, indicando las tablas a utlizar y las condificones que la
       Consulta deberia de cumplir
       NOTA: No debemos indicar la clausula limit en la conulta
       
        $SQL="select contacto,login from contactos where login='acoevil'";
    
    4: Relizamos la instancia de la clase PaginaEvil donde debemos indicar los sgte parametros
    
        $pagina=new PaginaEvil("mensajeria","","localhost","root",$SQL,7,$rutaCSS);
        
        * Nombre de la base de datos
        * Contraseña de la base de datos
        * Servidor
        * Nombre de usuario de la db
        * $SQL, que es el String que contiene la consulta
        * Numero maximo de resultados que se quieren visualizar por pagina
        * Por ultimo indicamos la ruta donde se encuentra el css por defecto esta en el mismo
          directorio  ( estilos.css )
    
    5:    Accedemos al metodo retorna filas por medio del objeto $pagina y lo asignamos a recurso
    
        $recurso=$pagina->retorna_filas();
    
    6: Se formatea el texto es decir si queremos que los resultados sagan mediante en tablas
       hacemos lo sgte

       Aqui por ejemplo se selecciona el nombre de usurio y el concacto del usuario
       
       * Dentro del $row['nombre_campos']; debemos especificar los mismos campos que
         se colocaron dentro de la variable (   $SQL  )
                     
           ?><table><?
        
while($row=mysql_fetch_array($recurso,MYSQL_ASSOC))
        {
            
?> <tr><td><? echo $row['contacto'];?></td></tr><?
            ?>
 <tr><td><? echo $row['login'];?></td></tr><?
        
}
        
?></table><?
        
        Y la salida seria
        
        
-------------------------------------
        
andres  acoevil
        pepito  acoevil
        otro    acoevil
        
                  
        
|Anterior1 2 3 4 |Siguiente|
        ------------------------------------
    
    
7Por ultimo llamamos el metodo ejecuta por medio del objeto $pagina
        
        $pagina
->ejecuta();
        
        
De esta forma tendriamos los resultados de una consulta SQL organizada por paginas    
        
    
/*************************/
    
    //Configuracion de la base de datos
    
private $nombre_db;
    private 
$contra_db;
    private 
$servidor_db;
    private 
$user_db;
    private 
$conexion_db;
    
//Configurando el paginador
    
private $tam_pagina;
    private 
$can_resultados;
    private 
$can_paginas;
    private 
$dir_actual;
    
//SQL para paginar
    
private $SQL;
    private 
$campoSQL;
    
    private 
$rutaCSS;
    
    function 
__construct($nom,$contra,$servidor,$user,$SQL,$tam_pag="7",$rutaCSS='estilos.css'){
        
//De la base de datos
        
$this->nombre_db=$nom;        $this->servidor_db=$servidor;
        
$this->contra_db=$contra;    $this->user_db=$user;
        
//Del SQL     
        
$this->SQL=$SQL;
        
//Ruta del archivo css
        
$this->rutaCSS=$rutaCSS;
        
        if(empty(
$this->SQL)){
            echo 
"La consulta SQL se encuentra vacia";
            exit;
        }
    
        
//Se realiza la conexion a la base de datos
        
$this->conecta_db();
        
//Del paginador
        
$this->tam_pagina=$tam_pag;
        
$consulta=mysql_query($this->SQL) or die(mysql_error());
        
$this->can_resultados=mysql_num_rows($consulta);
        if(
$this->can_resultados==0){ exit;}
        
?> <style type="text/css">@import url(<? echo $this->rutaCSS?>);</style> <?
        
    
}
    private function 
conecta_db(){
        
$this->conexion_db=mysql_connect($this->servidor_db,$this->user_db,$this->contra_db
        or die(
mysql_error());
        
mysql_select_db($this->nombre_db,$this->conexion_db) or die(mysql_error());
        return 
$this->conexion_db;
    }
    public function 
retorna_filas(){
        
$pag=$_GET['pag'];
        if(
$pag=="" || $pag==0){
            
$pag=1;
        }
            
$pag=($pag-1)*$this->tam_pagina;
            
$resultados=mysql_query($this->SQL." limit "$pag.",".$this->tam_pagina
            or die(
mysql_error());
            
        return 
$resultados;
    }
    public function 
ejecuta(){
        
$this->can_paginas=ceil($this->can_resultados/$this->tam_pagina);
        
$pag=$_GET['pag'];
        
$pagA=$pag-1;
        
$pagS=$pag+1;
        
$this->dir_actual=$_SERVER['REQUEST_URI'];
        
$this->dir_actual=preg_replace('/&pag=(.*)/','',$this->dir_actual);
        
        if(!
preg_match('/\\?/',$this->dir_actual)){
            
$this->dir_actual=$this->dir_actual."?";
            
        }
        
        if(
$pag>1){
            
?> <a href="<? echo $this->dir_actual."&amp;pag=".urlencode($pagA); ?>" class="colorea"> Anterior</a><?
        
}
        echo 
$this->muestra_links($pag);
        
        if(
$pag<$this->can_paginas){
            
?> <a href="<? echo $this->dir_actual."&amp;pag=".urlencode($pagS); ?>" class="colorea"> Siguiente</a><?
        
}
                
    }
    private function 
muestra_links($pag){
        
$inicio=1;
        
$fin=5;
        
        if(
$pag==2){
            
$inicio=1$fin=5;
        }else if(
$pag>=3){
            
$inicio=$pag-2;
            
$fin=$pag+2;
        }
        
        
        for(
$inicio;$inicio<=$fin;$inicio++){
            
$actual='';
            if(
$inicio==$pag){
                
$actual='#8BB033';
            }
?> <a href="<? echo $this->dir_actual."&amp;pag=".urlencode($inicio);?>" class="colorea" style="background:<?  echo $actual;?>"><? echo $inicio?></a><?
            
if($inicio==$this->can_paginas){
                break;
            }
        
        }
        
        
        
    }

    
    
    
    
    
}

/*EJEMPLO COMPLETO DE USO*/
$SQL="select contacto from contactos where login='acoevil'";
$pagina=new PaginaEvil("mensajeria","","localhost","root",$SQL,7);
$recurso=$pagina->retorna_filas();
       
?><table><?
        
while($row=mysql_fetch_array($recurso,MYSQL_ASSOC))
        {
            
?> <tr><td><? echo $row['contacto'];?></td></tr><?
        
}
        
?></table><?
$pagina
->ejecuta();

?>


Este es el css estilos.css



a.colorea{
border:1px solid #123456; /*Bordes de los cuadros que encierran los links |1| */
padding:2px; /*Relleno desde el numero hasta el cuadro | 1 | */
background:#333; /*Color de fondo de cada uno de los links*/
color:#fff; /*Color de la letra*/
text-decoration:none; /*Para que no salga con subrayado*/
}
a.colorea:hover{
background:#5d6e7A; /*Para que cambie el background mientras el puntero esta encima del boton*/
}





Aqui la imagen jeje

http://s3.subirimagenes.com/fotos/pr...95303ejemo.jpg

Última edición por acoevil; 24/06/2009 a las 11:34