martes 6 de enero de 2009

Crear una paginacion con clases

primero crearemos una conexion muy sencilla para este ejemplo estoy usando la base de datos de mysql llamada mysql :P.

Conexion.php

<?php
$host='localhost';
$user='root';
$pass='';
$dbase='xphp';


$link=@mysql_connect($host,$user,$pass) or die('<b>error 1:</b> No es posible conectar el servidor SQL.');
@mysql_select_db($dbase,$link) or die ('<b>Error 2:</b> No es Posible conectar la base de datos');
?>


luego llamaremos la clase con el siguiente codigo.
example.php


<?php
include("conexion.php");
include("php_pageclass.php");
echo "
Forma 1
";
$class_page=new page();
$class_page->table="help_topic";
$class_page->link="example.php";
$class_page->gen_query();

//estos son los demas codigos que podemos usar para hacer una busqueda o una consulta mas detallada.

echo "

Forma 2
";
$class_page->fields="h.name";
$class_page->where="h.name like '%j%'";
$class_page->order="h.help_topic_id desc";
$class_page->start=1;
$class_page->length=1;
$class_page->table="help_topic h";
$class_page->link="example.php";
$class_page->gen_query();

?>



y por ultimo y no menos importante la clase en si

php_pageclass.php
<?php
/////////////////////////////////////////////////////////////////////////
// CLASE DE PAGINACION EN PHP
//
// Clase para generar la paginacion de las paginas desde una consulta de datos MySQL
//
//////////////////////////////////////////////////////////////////////////////

/**
* @CLASE DE PAGINACION EN PHP
* @autor   Haendel De Jesus
*/

class page{

public $fields;
public $where;
public $order;
public $table;
public $link;
public $start;
public $length;

function gen_query(){

$hasta = (int) $this->length;
$hasta= isset($this->length) ? $this->length : "5";
$inicios=(int)$this->start;
$inicios= isset($this->start) ? $this->start : "0";
$donde= isset($this->where) ? "WHERE $this->where" : "";
$order= isset($this->order) ? "ORDER BY $this->order" : " ";
$campos= isset($this->fields)? $this->fields : "*";
$tables= isset($this->table) ? $this->table : "1";
$link= isset($this->link) ? $this->link : "1";
$resultado= "";
$nopag=0;

if ($tables==1)echo "ERROR TABLAS NO DECLARADAS";
elseif ($link==1)echo "ENLACE NO DECLARADO";
else
$pagina = $_GET["page"];
if (!$pagina) {
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $hasta;

}
$sql= "SELECT $campos FROM $tables $donde $order";

$resultado=mysql_query($sql);
$num_total_registros = mysql_num_rows($resultado);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $hasta);



if ($total_paginas >= 1){


if ($pagina>=2){
echo " <a href='".$link."?page=".($pagina-1)."'>Anterior</a> ";
  }


for ($i=1;$i<=$total_paginas;$i++){

if ($pagina == $i) {

//si muestro el índice de la página actual, no coloco enlace
echo " ".$pagina . " ";


}else {

//si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
echo " <a href='".$link."?page=".$i."'>" . $i . "</a>";


}
}          

if ($pag==0){
$pag=1;}
if ($pagina!=$total_paginas and $total_paginas>1){
echo " <a href='".$link."?page=".($pagina+1)."'>Siguiente</a>";
  }


}




}
}




?>


esto es una clase que hice y que uso para paginar en php espero que les sirva cualquier problema me dejan un comentario.

1 comentarios:

Princess dijo...

cool, habra q ver si me sale! :D muaks.