Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/05/2011, 12:34
Avatar de RollerSky
RollerSky
 
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 18 años, 7 meses
Puntos: 8
Respuesta: Paginación reto para todos!

Cita:
$(document).ready(function($){
$('#CAPA_A_MOSTRAR').dataTable(
{"bJQueryUI": true,
"sPaginationType": "full_numbers"
})
});

bueno aunque esto es Javascript( Jquery), te puede servir pero si lo que quieres es con PHP

aqui te dejo una clase que "hice yo"

Código PHP:
<?php

CopyRight
: Armando Herrera
class paginador extends conexion {

    var 
$numRegistros = 10;
    var 
$inicio          = 0;
    var 
$totalRegistros;
    var 
$totalPaginas;
    var 
$conexion;
    var 
$query = NULL;
    var 
$pagina;
    var 
$tagSiguiente = "&raquo;";
    var 
$tagAtras       = "&laquo;";
    var 
$v_datos;
    var 
$variablesGet;
    
    function 
__construct($cnx){
        
$this->conexion = $cnx;
    } 

    function 
totalRegistros(){
        
$this->conexion->ejecutarConsulta($this->query);
        
$this->totalRegistros = $this->conexion->numRows();
    }
    
    public function 
totalPaginas(){
        if(
$this->totalRegistros > 0){
            
$this->totalPaginas = ceil($this->totalRegistros / $this->numRegistros);
        }else{
            
$this->totalPaginas = 1;
        }
    }
    
    function 
paginar($query){
        if(empty(
$_GET[$this->pagina]) || !is_numeric($_GET[$this->pagina])){
            
header("Location: ".$_SERVER['PHP_SELF']."?".$this->pagina."=1".$this->agregarGet());
            exit;
        }
        
$this->query = $query;
        
$this->totalRegistros();
        
$this->totalPaginas();
    }
    
    function 
mostrarPaginacion(){
        if(
$this->totalRegistros) {
            echo 
'<ul>';
            if((
$_GET[$this->pagina] - 1) > 0) {
                
//echo "<li class=\"num\"><a href=\"?".$this->pagina."=".($_GET[$this->pagina]-1).$this->agregarGet()."\">".$this->tagAtras."</a></li>";
                
echo "<li class=\"num\"><a href=\"".($_GET[$this->pagina]-1).$this->agregarGet()."\">".$this->tagAtras."</a></li>";
            }
            
            for (
$i=1; $i <= $this->totalPaginas; $i++){ 
                if (
$_GET[$this->pagina] == $i) {
                    
$temp[$i] =  "<li class=\"num\"><b>".$_GET[$this->pagina]."</b></li> "; 
                } else {
                    
//$temp[$i] =  "<li class=\"num\"><a href=\"?".$this->pagina."=".$i.$this->agregarGet()."\" >".$i."</a></li>";
                    
$temp[$i] =  "<li class=\"num\"><a href=\"".$i.$this->agregarGet()."\" >".$i."</a></li>";
                }    
            }
            
              echo 
implode("  ", $temp);
            
            if((
$_GET[$this->pagina] + 1)<=$this->totalPaginas) {
                
//echo "<li class=\"num\"><a href=\"?".$this->pagina."=".($_GET[$this->pagina]+1).$this->agregarGet()."\" >".$this->tagSiguiente."</a></li>";
                
echo "<li class=\"num\"><a href=\""./*$this->pagina*/($_GET[$this->pagina]+1).$this->agregarGet()."\" >".$this->tagSiguiente."</a></li>";
            }
            echo 
'</ul>';
        }
    }
    
    function 
agregarGet(){
        
        switch(
func_num_args()){
            case 
1: 
                foreach(
$this->variablesGet as $varGet)
                    
$get.= "&$varGet=".$GLOBALS[$varGet];
                return 
$get;
                break;
            default:
            
                for(
$i = 0; $i < func_num_args(); $i++){
                    
$this->variablesGet[] = func_get_arg($i);
                }
                break;
        }
    } 
    
    function 
mostrarContenido(){
        
$this->inicio = ($_GET[$this->pagina]-1) * $this->numRegistros; 
        
$nuevaConsulta = $this->query." LIMIT ".$this->inicio.",".$this->numRegistros;
        
$this->conexion->ejecutarConsulta($nuevaConsulta);
    }
    
    
    function 
vectorDatos(){
        
$this->inicio = ($_GET[$this->pagina]-1) * $this->numRegistros; 
        
$nuevaConsulta = $this->query." LIMIT ".$this->inicio.",".$this->numRegistros;
        
$this->conexion->ejecutarConsulta($nuevaConsulta);
        if(
$this->totalRegistros > 0){
            
$j = 0;
            while(
$dt = $this->conexion->fetchAssoc()){
                
$indices = array_keys($dt);
                
//echo $indices[0];
                
for($i=0; $i<=count($indices); $i++){
                    
$this->v_datos[$j][$indices[$i]] = $dt[$indices[$i]];
                }
                
$j++;
            }
            return 
$this->v_datos;
        }else{
            return 
false;
        }
        return 
false;
    }
}
?>
y aqui la clase conexion!
Código PHP:
class conexion{
    private 
$conexionId;
    private 
$baseDatos;
    private 
$servidor;
    private 
$passwordBD;
    private 
$usuarioBD;
    private 
$consultaID;
    private 
$error;
    
    function 
conexion(){
        try{
            
$this->baseDatos      = BD;
            
$this->servidor        = SERVIDOR_BD;
            
$this->usuarioBD     = USUARIO_BD;
            
$this->passwordBD    = PASSWORD_BD;
            
        }catch(
Exception $error){
            
$this->error = $error->getMessage();
        }
    }
    
     function 
conectar(){
        try{
            
$this->conexionId = @mysql_connect($this->servidor, $this->usuarioBD, $this->passwordBD);

            if (!
$this->conexionId) {
                
$this->error = "Error en la Conexion";
                return 
0;
            }

            if (!@
mysql_select_db($this->baseDatos, $this->conexionId)) {
                
$this->error = "Imposible abrir ".$this->baseDatos ;
                return 
0;
            }
        }catch(
Exception $error){
            
$this->error = $error->getMessage();
        }
    return 
$this->conexionId;
    }
    
    function 
ejecutarConsulta($consulta){
        try{
            if(
$this->conectar()){
                if(!empty(
$consulta)){
                    
$this->consultaID = @mysql_query(($consulta), $this->conexionId);
                    
$id =  mysql_insert_id();
                    
$this->cerrarConexion();
                }
            }
        }catch(
Exception $error){
        
$this->error = $error->getMessage();
        }
    return 
$id;
    }
    
    function 
fetchArray(){
        try{
            
$array = @mysql_fetch_array($this->consultaID);
        }catch(
Exception $error){
            
$this->error = $error->getMessage();
        }
        return(
$array);
    }
    
   function 
numRows(){
        try{
            
$array = @mysql_num_rows($this->consultaID);
        }catch(
Exception $error){
            
$this->error = $error->getMessage();
        }
        return(
$array);
    }
    
    function 
fetchAssoc(){
        try{
            
$array = @mysql_fetch_assoc($this->consultaID);
        }catch(
Exception $error){
            
$this->error = $error->getMessage();
        }
        return(
$array);
    }
    
    private function 
cerrarConexion(){
        try{
            if (
$this->conexionId) {
                @
mysql_close($this->conexionId);
            }
        }catch(
Exception $error){
            
$this->error = $error->getMessage();
        }
    }
} 
y aqui su uso:
Código PHP:
//Ejemplo de su uso:


require_once("Clase.conexion.php");
require_once(
"Clase.paginador.php");
$cnx = new conexion();
$q_noticias = "SELECT * FROM TABLA  ORDER BY fecha DESC";

$pg                 = new paginador($cnx);
$pg->pagina         = "p"; //variable GET de paginacion
$pg->numRegistros     = 5;  //Cantidad de registros
$pg->paginar($q_noticias);
$pg->mostrarContenido();


$pg->mostrarPaginacion(); //Esto p muestra la paginacion! 
__________________
www.sawedsa.com