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 + 1 || $i == $this->page + 2 || $i == $this->page - 1
|| $i == $this->page - 2 || $i == 0 || $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