Cómo hacer paginación codigo en php y mysql

    En este tutorial vamos aprender cómo hacer paginación  codigo en php y mysql, para mostrar datos de una base datos de forma ordenado, si trabajamos con una enorme cantidad datos no es necesario mostrar todos los datos o registros en toda la página, porque no sería ideal que ocupe toda la página.

    Por ejemplo google, al momento de hacer búsqueda realiza automáticamente la paginación de toda la información que devuelve, imagine que google muestre los resultado de búsqueda sin paginar, cuyo resultado sería horrible en otras palabras seria aburrido par los usuarios estar haciendo scroll con rueda del maus, razón por la cual es bueno hacer la paginación de los datos.

    A continuación en el siguiente ejemplo se crea  una base datos en MySQL llamado turl y una tabla  llamado ejemplo_paginacion, he aquí el ejemplo de script SQL.

    CREATE DATABASE turl;
    
    CREATE TABLE `ejemplo_paginacion` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `Nombre` varchar(45) NOT NULL,
      `Apellido` varchar(45) NOT NULL,
      PRIMARY KEY (`id`)
    );

    En el siguiente ejemplo de código se muestra como hacer el código de paginación, en las primeras líneas de código se hace la conexión a la base de datos, y  una variable  que almacena un valor numérico para mostrar el número de  paginación.

    Archivo: paginador.php

      /**
     * Autor: Rodrigo Chambi Q.
     * Mail:  filvovmax@gmail.com
     * web:   www.gitmedio.com
     * Script para hacer Paginacion en PHP, Mysql y HTML5
     */
    $CantidadMostrar=5;
    //Conexion  al servidor mysql
    $conetar = new mysqli("localhost", "root", "", "turl");
    if ($conetar->connect_errno) {
        echo "Fallo al conectar a MySQL: (" . $conetar->connect_errno . ") " . $conetar->connect_error;
    }else{
                        // Validado de la variable GET
            $compag         =(int)(!isset($_GET['pag'])) ? 1 : $_GET['pag']; 
    	$TotalReg       =$conetar->query("SELECT * FROM ejemplo_paginacion");
    	//Se divide la cantidad de registro de la BD con la cantidad a mostrar 
    	$TotalRegistro  =ceil($TotalReg->num_rows/$CantidadMostrar);
    	echo "<b>La cantidad de registro se dividió a: </b>".$TotalRegistro." para mostrar 5 en 5<br>";
    	//Consulta SQL
    	$consultavistas ="SELECT
    						ejemplo_paginacion.id,
    						ejemplo_paginacion.Nombre,
    						ejemplo_paginacion.Apellido
    						FROM
    						ejemplo_paginacion
    						ORDER BY
    						ejemplo_paginacion.id ASC
    						LIMIT ".(($compag-1)*$CantidadMostrar)." , ".$CantidadMostrar;
    	$consulta=$conetar->query($consultavistas);
             echo "<table><tr><th>Codigo</th><th>Nombre</th><th>Apellido</th></tr>";
    	while ($lista=$consulta->fetch_row()) {
    	     echo "<tr><td>".$lista[0]."</td><td>".$lista[1]."</td><td>".$lista[2]."</td></tr>";
    	}
    	    echo "</table>";
         
        /*Sector de Paginacion */
        
        //Operacion matematica para botón siguiente y atrás 
    	$IncrimentNum =(($compag +1)<=$TotalRegistro)?($compag +1):1;
      	$DecrementNum =(($compag -1))<1?1:($compag -1);
      
    	echo "<ul><li class=\"btn\"><a href=\"?pag=".$DecrementNum."\">◀</a></li>";
        //Se resta y suma con el numero de pag actual con el cantidad de 
        //números  a mostrar
         $Desde=$compag-(ceil($CantidadMostrar/2)-1);
         $Hasta=$compag+(ceil($CantidadMostrar/2)-1);
         
         //Se valida
         $Desde=($Desde<1)?1: $Desde;
         $Hasta=($Hasta<$CantidadMostrar)?$CantidadMostrar:$Hasta;
         //Se muestra los números de paginas
         for($i=$Desde; $i<=$Hasta;$i++){
         	//Se valida la paginacion total
         	//de registros
         	if($i<=$TotalRegistro){
         		//Validamos la pag activo
         	  if($i==$compag){
               echo "<li class=\"active\"><a href=\"?pag=".$i."\">".$i."</a></li>";
         	  }else {
         	  	echo "<li><a href=\"?pag=".$i."\">".$i."</a></li>";
         	  }     		
         	}
         }
    	echo "<li class=\"btn\"><a href=\"?pag=".$IncrimentNum."\">▶</a></li></ul>";
      
    }
    

    En la línea 15 se recibe  el numero de paginado por medio  del método GET, y este también se válida para que no sea recibido un  carácter que no sea numérico, y en la  línea 16 se hace la consulta total de los datos  para rescatar el numero total de datos devuelto, esto  para dividir y mostrar ya sea 5 en 5 o 10 en 10, este dependerá   del gusto de cada uno, pero generalmente se muestras de 10 en  10, en el ejemplo se muestra  de en 5 en 5.

    En la línea 21 a 35 se hace la consulta a la base de datos , para rescatar y mostrar los datos, si te fijas bien en la línea 29,  se usa La palabra reservada LIMIT  que permite mostrar una cierta cantidad, tal como habíamos dicho anteriormente  ya sea 10 en 10 u otro.

    En la línea 40 y 41, se hace la operación matemática incremento,  decremento  y validación de la misma.

    En la línea 46 y 47  se hace la operación matemática  resta, suma  y  división con el numero de pag actual enviado por método GET y con el cantidad de números  a mostrar, y se valida los resultado que devuelve en la línea  50 y 51.

    Finalmente en la línea 56 se buclea con la instrucción for los números de paginación a mostrar.

    En el archivo index.php, se importa el archivo paginador.php para mostrar los datos y tabien  se le da el estilo. El ejemplo se debe mostrar tal como se ve en la siguiente imagen.

    Ejemplo de paginacion en php y mysql

    Archivo: index.php

      /**
     * Autor: Rodrigo Chambi Q.
     * Mail:  filvovmax@gmail.com
     * web:   www.gitmedio.com
     * Paginador para PHP, HTML5
     */
    
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Paginacion en PHP</title>
    	
    	<style type="text/css">
    	   .active > a{
    	   	background: rgb(255,116,0); 
    	   }
    	  ul{
    	  	margin-left: 0px;
    	  	padding: 0px;
    	  } 
          ul > li{
          	list-style: none;
          	display: inline-block;
          	margin-right:7px;
          }
          ul > li > a {
          	color: #FFFFFF;
          	text-decoration: none;
          	padding: 5px 10px 5px 10px;
            display: block;
    		background: #1e5799; /* Old browsers */
    		border-radius: 20px;
          }
          .btn > a{
          	padding: 2px;
    		background: #1e5799; /* Old browsers */
    		 border-radius: 2px;
    		 text-align: center;
    		 width:30px;
          }
          table{
          	border: solid 1px #7E7C7C;
          	border-collapse: collapse;
          }
    td , th{
          	border: solid 1px #7E7C7C;
          	padding: 2px;
          	text-align: center;
          }
    	</style>
    </head>
    <body>
     
    require_once 'paginador.php';
     
    </body>
    </html>
    

    Descargar:

    Descargar el ejemplo de paginación 3KB
    Sobre el autor
    Rodrigo Chambi Q.

    Desarrollador de aplicaciones web y de escritorio, amante de la tecnología y autodidacta, me gusta conocer otras tecnologías, escribir artículos para compartir en la web y para estar al tanto en los nuevos paradigmas, respeto las políticas de software privativo y libre, ya que estas políticas son las normas que permite el desarrollo tecnológico social de la humanidad. filvovmax@gmail.com -- info@gitmedio.com

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    11 Comentarios

    1. De Luis

      Responder

    2. De Jhonatan

      Responder

    3. Responder

      • De Rodrigo

        Responder

    4. De camarjhoa

      Responder

    5. De Ruben

      Responder

    6. De Frank

      Responder

    7. De Hugo Meza

      Responder

      • De Javier Alexander

        Responder

    8. Responder

    9. De Jose Castañeda

      Responder