Autor Tema: Ejemplo de paginación con PHP, CSS and MySQL  (Leído 1552 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado graphixx

  • Whitehat
  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 1609
  • Karma: +1984/-0
  • Whitehat
    • Ver Perfil
    • Sistemas y Controles


Crear una base de datos "Paginar" y conectar usando el código:
Código: (php) [Seleccionar]
<!--?<span class="hiddenSpellError" pre="" data-mce-bogus="1"--><?php
  $db 
= @mysql_connect('localhost''root''') or die(mysql_error());
  @
mysql_select_db('pagination'$db) or die(mysql_error());
?>


Añadir este código antes de paginar en el index:
Código: (php) [Seleccionar]
<?php
    
//script By - www.Abhislab.com
    //connect to the database
    
include_once ('db.php'); 
    
//get the function
    
include_once ('function.php');
    
$page = (int) (!isset($_GET["page"]) ? $_GET["page"]);
    
$limit 5;
    
$startpoint = ($page $limit) - $limit;
    
//to make pagination
    
$statement "`countries` where `active` = 0";
?>


Usar esta función de paginar y obtener el resultado:

Lista de elementos:
Código: (php) [Seleccionar]
    <div class="records round">
    <p><b>Countries List -</b></p>
        <?php
            
//show records
            
$query mysql_query("SELECT * FROM {$statement} LIMIT {$startpoint} , {$limit}");
            
        
while ($row mysql_fetch_assoc($query)) {
        
?>

            <div class="record">
   <?php echo "<b>{$row['id']})</b> {$row['country_name']}";?>
</div>

        <?php } echo pagination($statement,$limit,$page); ?>
  </div>

Función paginar - function.php:
Código: (php) [Seleccionar]
<?php 
 
//script By - www.Abhislab.com
function pagination($query$per_page 10,$page 1$url '?'){        
    
$query "SELECT COUNT(*) as `num` FROM {$query}";
    
$row mysql_fetch_array(mysql_query($query));
    
$total $row['num'];
        
$adjacents "2"
 
    
$page = ($page == $page);  
    
$start = ($page 1) * $per_page;

    
$prev $page 1;
    
$next $page 1;
        
$lastpage ceil($total/$per_page);
    
$lpm1 $lastpage 1;
    

    
$pagination "";
    
if($lastpage 1)
    
{
    
$pagination .= "<ul class='pagination'>";
                    
$pagination .= "<li class='details'>Page $page of $lastpage</li>";
    
if ($lastpage + ($adjacents 2))
    
{
    
for ($counter 1$counter <= $lastpage$counter++)
    
{
    
if ($counter == $page)
    
$pagination.= "<li><a class='current'>$counter</a></li>";
    
else
    
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
    
}
    
}
    
elseif($lastpage + ($adjacents 2))
    
{
    
if($page + ($adjacents 2))
    
{
    
for ($counter 1$counter + ($adjacents 2); $counter++)
    
{
    
if ($counter == $page)
    
$pagination.= "<li><a class='current'>$counter</a></li>";
    
else
    
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
    
}
    
$pagination.= "<li class='dot'>...</li>";
    
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
    
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";
    
}
    
elseif($lastpage - ($adjacents 2) > $page && $page > ($adjacents 2))
    
{
    
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
    
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
    
$pagination.= "<li class='dot'>...</li>";
    
for ($counter $page $adjacents$counter <= $page $adjacents$counter++)
    
{
    
if ($counter == $page)
    
$pagination.= "<li><a class='current'>$counter</a></li>";
    
else
    
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
    
}
    
$pagination.= "<li class='dot'>..</li>";
    
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
    
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";
    
}
    
else
    
{
    
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
    
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
    
$pagination.= "<li class='dot'>..</li>";
    
for ($counter $lastpage - (+ ($adjacents 2)); $counter <= $lastpage$counter++)
    
{
    
if ($counter == $page)
    
$pagination.= "<li><a class='current'>$counter</a></li>";
    
else
    
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";
    
}
    
}
    
}
    

    
if ($page $counter 1){ 
    
$pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
                
$pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
    
}else{
    
$pagination.= "<li><a class='current'>Next</a></li>";
                
$pagination.= "<li><a class='current'>Last</a></li>";
            }
    
$pagination.= "</ul>\n";
    
}
    
    
        return 
$pagination;

?>


Mejorar la vista con CSS:
Código: (css) [Seleccionar]
ul.pagination{
margin:0px;
margin-top:25px;
padding:0px;
height:100%;
overflow:hidden;
font:11px 'Tahoma';
list-style-type:none;
}
 
ul.pagination li.details{
    padding:7px 10px 7px 10px;
    font-size:11px;
font-weight:bold;
}
 
ul.pagination li.dot{padding: 3px 0;}
 
ul.pagination li{
float:left;
margin:0px;
padding:0px;
margin-left:5px;
}
 
ul.pagination li:first-child{
margin-left:0px;
}
 
ul.pagination li a{
color:black;
display:block;
text-decoration:none;
padding:7px 10px 7px 10px;
}
 
ul.pagination li a img{
border:none;
}

Fuente y código descargable:
http://abhislab.com/blog/pagination-example-using-php-css-and-mysql/