Lenguaje PHP

Paginación usando PHP MySqli Bootstrap

Paginación usando PHP MySqli Bootstrap. En temas de desarrollo web, siempre nos encontraremos con búsquedas y resultados extraídos de una base de datos. Sin embargo, el problema radica cuando esos resultados son cientos de registros y por el tema del uso de CPU de nuestro servidor debemos de fraccionarlo en partes para evitar que sobrecargue nuestro servidor.

Por lo tanto, si tenemos un servidor compartido tenemos que tener cuidado ya que podrían suspender nuestra cuenta por el alto consumo de recursos.

Paginación usando PHP MySqli Bootstrap

Para dar solución a estos inconvenientes es recomendable paginar nuestros resultados MySQL, en varias páginas con resultados limitados. Por ejemplo, si tenemos 1000 registros, podríamos mostrar los resultados en páginas de 20 elementos, según sea el caso.

Para lograr este objetivo tenemos que usar PHP y MySQL.

En este artículo trabajaremos con 5 registros en cada página y siempre mostramos el número de página para que el resultado sea óptimo.

Recursos y librerías a utilizar en este articulo

  • Lenguaje PHP, como interprete y conexión con MySQL
  • Gestor base de datos MySQL , en donde obtendremos los resultados de nuestra paginación
  • HTML5, como lenguaje de marcas.
  • Librería de estilos Bootstrap, para darle la estetica necesaria a nuestro proyecto.

Crear base de datos con su respectiva tabla llamada «ALUMNOS» y sus registros.

Ahora procederemos a crear nuestra base de datos, por lo tanto, desde ahí es donde obtendremos los datos para mostrarlo en el navegador. Sin embargo, trabajaremos sobre una base de datos llamada «php_paginacion», Dentro de ella crearemos una tabla llamada alumnos que tiene tres campos. El motor de almacenamiento es MyISAM.

CREATE TABLE `alumnos` (
  `alumno_id` int(11) NOT NULL,
  `nombres` varchar(250) CHARACTER SET utf8 DEFAULT NULL,
  `telefonos` varchar(20) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Volcado de datos para la tabla `alumnos`
--

INSERT INTO `alumnos` (`alumno_id`, `nombres`, `telefonos`) VALUES
(1, 'Jhon F. Connor', '987686543'),
(2, 'Juan M. Cardenas', '345768797'),
(3, 'Luis Gallesse', '98655-9765'),
(4, 'Armando V. Vicent', '876445-9876'),
(5, 'Maria H. Casas', '765-9876'),
(6, 'Francisco J. Zac', '7545535-9766'),
(7, 'German G. Benites', '089786564'),
(8, 'Hector J. Neon', '9797864453'),
(9, 'Lucas K. Caceres', '8685-9978'),
(10, 'King L. Baron', '8675757-98'),
(11, 'Moises H. Varas', '796968575'),
(12, 'Trader F. Morales', '99797979'),
(13, 'Wen V. Marlon', '979786875'),
(14, 'Pones M. Casas', '98675757'),
(15, 'Emirat B. Den', '8868686'),
(16, 'Filomena Y. Vaca', '0978686'),
(17, 'Genesis V. Joon', '86868686'),
(18, 'Lucia T. Baca', '77585886'),
(19, 'Nilda G. Yanes', '878878878'),
(20, 'Nestor J. Dante', '7686868'),
(21, 'Jhon F. Connor', '987686543'),
(22, 'Juan M. Cardenas', '345768797'),
(23, 'Luis Gallesse', '98655-9765'),
(24, 'Armando V. Vicent', '876445-9876'),
(25, 'Maria H. Casas', '765-9876'),
(26, 'Francisco J. Zac', '7545535-9766'),
(27, 'German G. Benites', '089786564'),
(28, 'Hector J. Neon', '9797864453'),
(29, 'Lucas K. Caceres', '8685-9978'),
(30, 'King L. Baron', '8675757-98'),
(31, 'Moises H. Varas', '796968575'),
(32, 'Trader F. Morales', '99797979'),
(33, 'Wen V. Marlon', '979786875'),
(34, 'Pones M. Casas', '98675757'),
(35, 'Emirat B. Den', '8868686'),
(36, 'Filomena Y. Vaca', '0978686'),
(37, 'Genesis V. Joon', '86868686'),
(38, 'Lucia T. Baca', '77585886'),
(39, 'Nilda G. Yanes', '878878878'),
(40, 'Nestor J. Dante', '7686868');

--
-- Índices para tablas volcadas
--

--
-- Indices de la tabla `alumnos`
--
ALTER TABLE `alumnos`
  ADD PRIMARY KEY (`alumno_id`);

--
-- AUTO_INCREMENT de las tablas volcadas
--

--
-- AUTO_INCREMENT de la tabla `alumnos`
--
ALTER TABLE `alumnos`
  MODIFY `alumno_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=41;

Fichero paginacion.php

Crearemos un archivo llamado paginacion.php, en la cual será la encargada de realizar lo siguiente:

  • Conexión de PHP a MySQL
  • Realizar la consulta y mostrar los resultados
  • Generar la paginación de acuerdo a los resultados
  <!-- /.container-fluid --> 
</nav>
<div class="container">
  <div class="row">
    <div class="col-md-12">
      <h1>Paginación usando PHP MySqli</h1>
    </div>
  </div>
  <div class="row">
    <div class="col-md-6">
<div class="panel-body">


<?php
$conexion = mysqli_connect("localhost", "root", "", "php_paginacion");
$registro_por_pagina = 5;
$pagina = '';
if(isset($_GET["pagina"]))
{
 $pagina = $_GET["pagina"];
}
else
{
 $pagina = 1;
}

$start_from = ($pagina-1)*$registro_por_pagina;

$query = "SELECT * FROM alumnos order by alumno_id DESC LIMIT $start_from, $registro_por_pagina";
$result = mysqli_query($conexion, $query);

?>

<div class="table-responsive">
    <table class="table table-bordered">
     <tr>
      <th>ID</th>
      <th>Nombres</th>
      <th>Teléfonos</th>
     </tr>
     <?php
	 $number=0;
     while($row = mysqli_fetch_array($result))
     {
		 $number++;
     ?>
     <tr>
      <td><?php echo $number; ?></td>
      <td><?php echo $row["nombres"]; ?></td>
      <td><?php echo $row["telefonos"]; ?></td>
     </tr>
     <?php
     }
     ?>
    </table>
     <div align="center">
    <br />
    <?php
    $page_query = "SELECT * FROM alumnos ORDER BY alumno_id DESC";
    $page_result = mysqli_query($conexion, $page_query);
    $total_records = mysqli_num_rows($page_result);
    $total_pages = ceil($total_records/$registro_por_pagina);
    $start_loop = $pagina;
    $diferencia = $total_pages - $pagina;
    if($diferencia <= 5)
    {
     $start_loop = $total_pages - 5;
    }
    $end_loop = $start_loop + 4;
    if($pagina > 1)
    {
     echo "<a class='pagina' href='pagina.php?pagina=1'>Primera</a>";
     echo "<a class='pagina' href='pagina.php?pagina=".($pagina - 1)."'><<</a>";
    }
    for($i=$start_loop; $i<=$end_loop; $i++)
    {     
     echo "<a class='pagina' href='pagina.php?pagina=".$i."'>".$i."</a>";
    }
    if($pagina <= $end_loop)
    {
     echo "<a class='pagina' href='pagina.php?pagina=".($pagina + 1)."'>>></a>";
     echo "<a class='pagina' href='pagina.php?pagina=".$total_pages."'>Última</a>";
    }
    
    
    ?>
    </div>
    <br /><br />

 </div>


</div>
</div>
  </div>
</div>
Paginación usando PHP MySqli Bootstrap
Paginación usando PHP MySqli Bootstrap

Conclusión

La paginación es muy importante para nuestro proyecto y es muy recomendable su uso. Sin embargo, su implementación es muy simple que detallamos en este artículo.

Descarga

Descargar Código Fuente

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Un comentario

Deja una respuesta

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

Botón volver arriba