Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/05/2011, 12:34
Avatar de RollerSky
RollerSky
 
Fecha de Ingreso: marzo-2008
Mensajes: 123
Antigüedad: 16 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