Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/01/2009, 07:52
grunst3r
 
Fecha de Ingreso: diciembre-2008
Ubicación: Ayacucho and Lima
Mensajes: 10
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: [Apoerte] Paginacion php+mysql

Hola aldo1982 pues tengo un class de lo que buscas haver si te sirbe.

Paginacion php class mas css

Pagination.class.php
Código PHP:
<?php
/*******************************
By Grunst3r - consultas o dudas a [email protected]
y sus ayudas me sirven tambien para proyectos grandes xD
*******************************/
class CSSPagination
{
    private 
$totalrows;
    private 
$rowsperpage;
    private 
$website;
    private 
$page;
    private 
$sql;
        
    public function 
__construct($sql$rowsperpage$website)
    {
        
$this->sql $sql;
        
$this->website $website;
        
$this->rowsperpage $rowsperpage;
    }
    
    public function 
setPage($page)
    {
        if (!
$page) { $this->page=1; } else  { $this->page $page; }
    }
    
    public function 
getLimit()
    {
        return (
$this->page 1) * $this->rowsperpage;
    }
    
    private function 
getTotalRows()
    {
        
$result = @mysql_query($this->sql) or die ("query failed!");    
        
$this->totalrows mysql_num_rows($result);
    }
    
    private function 
getLastPage()
    {
        return 
ceil($this->totalrows $this->rowsperpage);
    }
    
    public function 
showPage()
    {
        
$this->getTotalRows();
        
        
$pagination "";
        
$lpm1 $this->getLastPage() - 1;
        
$page $this->page;
        
$prev $this->page 1;
        
$next $this->page 1;
        
        
$pagination .= "<div class=\"pagination\"";
        if(
$margin || $padding)
        {
            
$pagination .= " style=\"";
            if(
$margin)
                
$pagination .= "margin: $margin;";
            if(
$padding)
                
$pagination .= "padding: $padding;";
            
$pagination .= "\"";
        }
        
$pagination .= ">";
        
        
        
        if (
$this->getLastPage() > 1)
        {
            if (
$page 1
                
$pagination .= "<a href='$this->website?page=$prev' title='Anterior'>« Anterior</a>";
            else
                
$pagination .= "<span class=\"disabled\">« Anterior</span>";
            
            
            if (
$this->getLastPage() < 9)
            {    
                for (
$counter 1$counter <= $this->getLastPage(); $counter++)
                {
                    if (
$counter == $page)
                        
$pagination .= "<span class=\"current\">".$counter."</span>";
                    else
                        
$pagination .= "<a href='$this->website?page=$counter' title='pagina $counter'>".$counter."</a>";                    
                }
            }
            
            elseif(
$this->getLastPage() >= 9)
            {
                if(
$page 4)        
                {
                    for (
$counter 1$counter 6$counter++)
                    {
                        if (
$counter == $page)
                            
$pagination .= "<span class=\"current\">".$counter."</span>";
                        else
                            
$pagination .= "<a href='$this->website?page=$counter' title='pagina $counter'>".$counter."</a>";                    
                    }
                    
$pagination .= "...";
                    
$pagination .= "<a href='$this->website?page=$lpm1' title='pagina $lpm1'>".$lpm1."</a>";
                    
$pagination .= "<a href='$this->website?page=".$this->getLastPage()."' title='pagina ".$this->getLastPage()."'>".$this->getLastPage()."</a>";        
                }
                elseif(
$this->getLastPage() - $page && $page 1)
                {
                    
$pagination .= "<a href='$this->website?page=1' title='pagina 1'>1</a>";
                    
$pagination .= "<a href='$this->website?page=2' title='pagina 2'>2</a>";
                    
$pagination .= "...";
                    for (
$counter $page 1$counter <= $page 1$counter++)
                    {
                        if (
$counter == $page)
                            
$pagination .= "<span class=\"current\">".$counter."</span>";
                        else
                            
$pagination .= "<a href='$this->website?page=$counter' title='pagina $counter'>".$counter."</a>";                    
                    }
                    
$pagination .= "...";
                    
$pagination .= "<a href='$this->website?page=$lpm1' title='pagina $lpm1'>$lpm1</a>";
                    
$pagination .= "<a href='$this->website?page=".$this->getLastPage()."' title='pagina ".$this->getLastPage()."' >".$this->getLastPage()."</a>";        
                }
                else
                {
                    
$pagination .= "<a href='$this->website?page=1' title='pagina 1'>1</a>";
                    
$pagination .= "<a href='$this->website?page=2' title='pagina 2'>2</a>";
                    
$pagination .= "...";
                    for (
$counter $this->getLastPage() - 4$counter <= $this->getLastPage(); $counter++)
                    {
                        if (
$counter == $page)
                            
$pagination .= "<span class=\"current\">".$counter."</span>";
                        else
                            
$pagination .= "<a href='$this->website?page=$counter' title='pagina $counter'>".$counter."</a>";                    
                    }
                }
            }
        
        if (
$page $counter 1
            
$pagination .= "<a href='$this->website?page=$next' title='pagina $counter'>Siguiente »</a>";
        else
            
$pagination .= "<span class=\"disabled\">Siguiente »</span>";            
        }

       
$pagination .= "</div>\n";    
                    
        return 
$pagination;
    }
}
?>
y bueno en tu archivo lo ponemos asi

Código PHP:
<?php
require_once("Pagination.class.php"); 

$sql1 "SELECT * FROM table WHERE whateverfilter ORDER BY id "//  Consulta para mostrar el total de resultados
$rowsperpage 15// mostrar la cantidad de resultados
//$website = "?id=1"; // url de la web para la indexacion esta parte falta mejorar xD
$pagination = new CSSPagination($sql1$rowsperpage$website); // Creando Objetivo
$pagination->setPage($_GET[page]); // la paginacion en GET xD

$sql2 "SELECT * FROM table  WHERE whateverfilter ORDER BY id LIMIT " $pagination->getLimit() . ", " $rowsperpage
$result = @mysql_query($sql2$any_connection_db) or die("<b> No hay Coneccion </b>");
while (
$rows mysql_fetch_array($result))
{
// Aqui el contenido o la lits a de de tu tabla
}

echo 
$pagination->showPage(); // HTML Css mostrar paginacion
?>
y por ultimo el style css para la paginacion
Código HTML:
<style>
div.pagination {
	padding: 3px;
	margin: 3px; font-family:Verdana; font-size:8pt; text-decoration:none
}

div.pagination a {
	margin: 2px;
	border: 1px solid #000000;
	
	text-decoration: none; /* no underline */
	color: #000000;font-family:Verdana; font-size:8pt; padding-left:5px; padding-right:5px; padding-top:2px; padding-bottom:2px
}
div.pagination a:hover, div.pagination a:active {
	margin: 2px;
		border: 1px solid #800000;
		
		background-color: #800000;
		color: #FFFFFF;font-family:Verdana; font-size:8pt; padding-left:5px; padding-right:5px; padding-top:2px; padding-bottom:2px; text-decoration:none
}
div.pagination span.current {
	margin: 2px;
		border: 1px solid #000000;
		
		font-weight: bold;
		background-color: #000000;
		color: #FFFFFF;font-family:Verdana; font-size:8pt; padding-left:5px; padding-right:5px; padding-top:2px; padding-bottom:2px
	}
div.pagination span.disabled {
		margin: 2px;
		border: 1px solid #999999;
	
		color: #999999;font-family:Verdana; font-size:8pt; padding-left:5px; padding-right:5px; padding-top:2px; padding-bottom:2px
	}
	
a:hover.list { font-family: Verdana; font-size: 8pt; font-variant: small-caps; 
               text-decoration: underline; text-transform: capitalize; 
               color: #006699; line-height: 200%; font-weight: bold }
a.list       { text-transform: capitalize; font-variant: small-caps; font-family: Verdana; 
               font-size: 8pt; color: #FF0000; text-decoration: underline; 
               line-height: 200%; font-weight: bold }	
</style> 

Ami me funciona y lo uso en varias maneras xD haver quien laa saka provecho o la mejora seria bueno que alguien lo ague mucho mejor que este code