Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/07/2010, 02:06
Avatar de kalebra
kalebra
 
Fecha de Ingreso: mayo-2010
Ubicación: Marbella
Mensajes: 44
Antigüedad: 14 años
Puntos: 5
Respuesta: Paginar y crear links en php

Buenas para paginar yo utilizo la siguiente clase:

paginacion.php
Código PHP:
<?php
class paginacion
{    
    private 
$page//Pagina actual
    
private $from//Numero de registro desde donde iniciar la busqueda
    
private $quantity//Catidad de registros por página
    
private $totalRows//Total de registros a paginar
    
private $numPages//Numero total de paginas
    
private $puri//Parte de la uri a agregar a la url inicial
    
private $url//Url de la página que se desea hacer la paginación
    
private $classLink;
    
    
    public function 
__construct($quantity$page) {
            
// ------------------------------------------------------------------------------------- Validamos la entrada de datos
        
settype($page"integer");
        
settype($quantity"integer");
        
$this->page = ($page 0) ? $page 0;
        
$this->quantity = ($quantity 0) ? $quantity 0;
        
$this->from $page $quantity;
        
    }
    
    public function 
getFrom()
    {
        return 
$this->from;
    }
    
    public function 
generaPaginacion($totalRows$back$next$url$class "")
    {
        
settype($totalRows"integer");
        
$this->totalRows $totalRows;
        
        
$this->lassLink $class;
        
        
$url=preg_replace('[\&*\&]''&'$url);    //Quita las && = & repetidas
        
$url=preg_replace('[\?\&]''?',$url);    //Quita     ?& = ?
        
        
$this->url $url;
        
$this->numPages ceil($totalRows/$this->quantity);
        
        if (
$this->page 0) {
            
$this->puri $this->page 1;
            echo 
"<a href=\"$this->url&page=$this->puri\">$back</a>";
        }
        
        if (
$this->numPages 1) {
            for (
$i 0$i $this->numPages$i++) {
                if (
$i == $this->page) {
                    echo 
"<span class=\"actualPage\">$i</span>";
                }
                elseif (
$i == $this->page || $i == $this->page || $i == $this->page 1
                
|| $i == $this->page || $i == || $i == ($this->numPages 1)) {
                                        
// ------------------------------------------------------------------------------------- $page + 1, $page +2 son los numeros que se desea ver por delante del actual
// ------------------------------------------------------------------------------------- $page -1, $page -2 son los numeros (Links) a ver por detras del actual
// ------------------------------------------------------------------------------------- Esto se puede modificar como se desee
                    
echo " <a class=\"$class\" href=\"$this->url&page=$i\">$i</a> ";
                }
                elseif (
$i == $this->page 3) {
                    echo 
"<span>...</span>";
                }
                elseif (
$i == $this->page 3) {
                    echo 
"<span>...</span>";
                }
            }
        }
        
        if (
$this->page $this->numPages 1) {
            
$this->puri $this->page 1;
            echo 
"<a href=\"$this->url&page=$this->puri\">$next</a>";
        }
    }
    
}
?>
Y para mostrar los resultados utilizo:
Código PHP:
<?php
    
// ---------------------------------------------------------------------------------- Incluimos el Archivo de Conexion a MYSQL.     
    
include("./includes/conexion.php");
    
// ---------------------------------------------------------------------------------- Incluimos el Archivo de Paginacion.    
    
require("./class/paginacion.php");
    
    
$query "SELECT * FROM servalq";
    
$rsT =  mysql_query($query$link);
    
$total mysql_num_rows($rsT);
    
    
$pg $_GET['page'];
    
// ---------------------------------------------------------------------------------- Cantidad de registros que se desea mostrar por pagina.    
    
$cantidad 4;
    
$paginacion = new paginacion($cantidad$pg);
    
$desde $paginacion->getFrom();

// ---------------------------------------------------------------------------------- Seleccionamos todo de la tabla deseada.
    
$query "SELECT * FROM servalq WHERE 1 LIMIT $desde, $cantidad";
    
$rs mysql_query($query$link);
    
?>
<center>
<div class="paginacion">
<?php

// ---------------------------------------------------------------------------------- URL de la pagina que se utilizara para la Paginacion.
    
$url "rent.php?";
    
    
$classCss "numPages";
    
// ---------------------------------------------------------------------------------- Botones Anterior y Siguiente con imagenes JPG.    
    
$back "<img id=\"cbi_cbindex_10\" src=\"images/anterior.png\" name=\"anterior\" width=\"29\" height=\"26\" style=\"vertical-align: bottom;\" border=\"0\" alt=\"Anterior\" title=\"Anterior\" />";
    
$next "<img id=\"cbi_cbindex_11\" src=\"images/siguiente.png\" name=\"siguiente\" width=\"29\" height=\"26\" style=\"vertical-align: bottom;\" border=\"0\" alt=\"Siguiente\" title=\"Siguiente\" />";
    
    
$paginacion->generaPaginacion($total$back$next$url$classCss);
?></center>    
    <br/>
<?php
    
while ($row mysql_fetch_assoc($rs)) {
?>

<!-- ---------------------------------------------------------------------------------- Tipo Estilo para el color del Precio. -->
<style type="text/css">
.Estilo1 {color: #FF0000}
.Estilo2 {}
</style>

<!-- ---------------------------------------------------------------------------------- Listado de la Paginacion. -->
<div style="border:#666666 solid 1px; background-color:#f4f3f3">
   <table width="760" height="100">
    <tr> 
     <td width="180">
      <div align="center"><a href='./rent-file.php?id=<?php echo $row["servalq_ID"];?>'><img src="./uploads/<?php echo $row["servalq_Image1"];?>" border="0"></a></div> </td>
     <td width="350"><div align="right"><b><?php echo $palabra->idioma[$_SESSION['idioma']][21]; ?>:</b> <?php echo $row['servalq_Ref']." </div><b>".$palabra->idioma[$_SESSION['idioma']][23].":</b> ".$row['servalq_Titulo']." <br/><b>".$palabra->idioma[$_SESSION['idioma']][24].":</b> ".$row['servalq_Localidad']." <br/><b>".$palabra->idioma[$_SESSION['idioma']][30].":</b> ".$row['servalq_Dormitorios']."<br/><b>".$palabra->idioma[$_SESSION['idioma']][31].":</b> ".$row['servalq_Banos']."  <br/>" ?>   </td>
     <td width="225">
      <div align="center"><?php echo "<b><span class=\"Estilo2\">".$palabra->idioma[$_SESSION['idioma']][22].": </span></b><span class=\"Estilo1\"><b>".$row['servalq_Pvp']; "</b></span>"?> Euros<?php echo "<a href='./rent-file.php?id=$row[servalq_ID]'><br/><img id=\"cbi_cbindex_6\" src=\"images/ver-ficha.png\" name=\"ebbcbindex_6\" width=\"70\" height=\"26\" style=\"vertical-align: bottom;\" border=\"0\" alt=\"Ver Ficha\" title=\"\" /></a>\n</div>"?></div></td>
    </tr>
   </table>
   </div><br/>
<?php
    
}
?>
Solo seria cuestion de adaptar o modificar lo que necesites.
Lo de acortar el texto nunca lo he necesitado asi que no se bien como hacerlo, pero imagino que sera facil adaptarlo, espero que te sirva.

Saludos