logo

Paginación PHP

PHP se utiliza principalmente para almacenar y mostrar datos de una base de datos. La paginación se puede hacer con ajax, pero aquí se hace sin ajax. En este tutorial, aprenderemos el paginación en PHP con MySQL . Hagamos una breve revisión sobre la paginación con un ejemplo:

Es posible que una consulta SQL SELECT devuelva millones de registros. No es una buena idea mostrar todos los registros en una sola página. Una lista grande de registros en una sola página puede tardar mucho tiempo en cargar la página y también consumir tiempo para encontrar datos específicos. Esto puede causar (conducir a) confusión en la mente del usuario. Por lo tanto, divida estos registros en varias páginas según los requisitos del usuario.

Entonces, ¿qué podemos hacer para distribuir esta gran cantidad de registros en varias páginas? El método de distribuir una única lista en varias páginas se conoce como Paginación . La paginación se refiere a mostrar el resultado de su consulta en varias páginas en lugar de una sola.

¿Qué es la paginación?

La paginación es una forma de mostrar los datos en varias páginas en lugar de colocarlos en una sola página. La paginación ayuda a dividir los registros en varias páginas, lo que hace que los datos sean más legibles y comprensibles.

La paginación es una tarea común para los desarrolladores de PHP. MySQL ayuda al desarrollador a crear paginación utilizando LÍMITE cláusula, que requiere dos argumentos. El primer argumento como COMPENSAR y el segundo argumento es número de registros que regresará de la base de datos.

int a cadena

Veamos algunas ventajas y desventajas de usar el concepto de paginación en PHP:

Ventajas de la paginación

  • La paginación es muy útil en proyectos de gran escala porque hace que el trabajo web sea más profesional. No sólo es más profesional, sino que también hace que la página web funcione mucho más rápido, preciso y eficiente.
  • Con la ayuda de la paginación, podemos ahorrar el tiempo de carga de una página dividiendo los datos en varias páginas. Nos ahorra cargar mucha información a la vez.
    Por ejemplo - Una página web con 1000 imágenes tardará más en cargar imágenes que las 50 imágenes de cada página web.
    Esto significa que miles de imágenes necesitan miles de solicitudes HTTP, lo que haría que la página no respondiera. Este problema se resuelve limitando la cantidad de datos con la ayuda de la paginación mediante la cláusula LIMIT.
  • El uso de la paginación mejora la experiencia del usuario, los ingresos publicitarios y disminuye el tiempo de carga de la página.

Desventajas de la paginación

Si bien la paginación tiene algunas ventajas poderosas, muchos desarrolladores aún evitan usarla. Además de algunas poderosas ventajas, la paginación también tiene algunas desventajas, que son las siguientes:

  • La paginación en sí misma es una gran sobrecarga en PHP, que es una de las desventajas de la paginación. Es completamente una sobrecarga, ya que es una característica externa que se puede implementar a costa de marcado, estilo y lógica superfluos. Un pequeño conjunto de datos a menudo se ignora para utilizar la paginación.
  • La paginación puede causar una clasificación baja de la página en el motor de búsqueda porque cuando una página está lejos de la página de inicio y requiere varios clics, generalmente no obtiene una clasificación alta.
  • También limita la cantidad de enlaces, recursos compartidos en redes sociales, la cantidad total de resultados visibles en la página web y el texto ancla que recibe una página cuando la información se divide en varias páginas.
Puede evitar el uso de la técnica de paginación modificando la estructura de su configuración de navegación.

Implementación de Paginación con PHP y MySQL

Para implementar la paginación, necesitamos un gran conjunto de datos para aplicarle la paginación. Por lo tanto, primero necesitamos crear una base de datos y una tabla. Después de eso, proporcione los registros en la tabla y comience a codificar para crear la paginación. Para que los datos obtenidos de la base de datos se puedan dividir en varias páginas.

Aquí presentaremos dos ejemplos de paginación. El primer ejemplo es un ejemplo simple y básico de creación de paginación sin CSS, mientras que en el segundo ejemplo, crearemos una paginación de manera atractiva usando CSS y bootstrap. Puede ver el resultado de ambos. A continuación se detallan los pasos indicados para la creación de paginación;

comparar cadenas java

Pasos simples para crear paginación -

  1. Cree una base de datos y una tabla. Proporcione una lista de registros en la tabla.
  2. Conéctese con la base de datos MySQL.
  3. Cree el enlace de paginación para dividir los datos en varias páginas y agregarlos al final de la tabla.
  4. Obtenga datos de la base de datos y muéstrelos en varias páginas.

Siga los pasos a continuación uno por uno y cree una paginación simple.

Ejemplo 1

El siguiente código es un ejemplo simple de paginación, que se realiza en PHP con la ayuda de la base de datos MySQL. Divide los datos obtenidos de la base de datos en varias páginas. En este ejemplo, crearemos la paginación para que los alfabetos se muestren en varias páginas.

Creación de base de datos

En primer lugar, cree una base de datos nombrada por paginación como creamos y una tabla dentro llamada alfabeto . Crear atributo por nombre identificación y alfabeto y proporcione los datos en la tabla.

Paginación PHP

Conectividad de base de datos

Conectar el archivo PHP a la base de datos es una tarea obligatoria. Para que pueda mostrar los datos almacenados en la base de datos en la página web. Por lo tanto, conecte la base de datos en su archivo PHP para mostrar datos en la página web.

Puede escribir el código de conectividad de la base de datos en el mismo archivo y también mantenerlo separado en otro archivo e incluirlo en el archivo PHP requerido. Código para conexión a base de datos.

Amplitud modulada
 $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } 

En este tutorial, estamos usando mysqli extensión. Entonces, todas las consultas se escriben según el formato mysqli.

Obtener el número de página actual

El siguiente código determina el número de página que el usuario está visitando actualmente. En caso de que no esté presente, de forma predeterminada el número de página está configurado en 1.

 if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } 

Fórmula para paginación

Para la paginación, debe establecer el límite de cantidad de registros que se mostrarán por página. Aquí, establecemos el límite de resultados por página en 10, por lo que se mostrará en cada página como se indica a continuación:

Página 1: A a J (1-10)

Página 2 - K a T (11-20)

Página 3 - U a Z (21-26)

 $results_per_page = 10; $page_first_result = ($page-1) * $results_per_page; 

Obtener el número total de páginas

 $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); 

Recuperar datos y mostrarlos en la página web.

El siguiente código se utiliza para recuperar los datos de la base de datos y mostrarlos en las páginas web que están divididas en consecuencia.

 $query = &apos;SELECT *FROM alphabet LIMIT &apos; . $page_first_result . &apos;,&apos; . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row[&apos;id&apos;] . &apos; &apos; . $row[&apos;alphabet&apos;] . &apos;<br>&apos;; } 

Mostrar el enlace de las páginas en URL.

El uso de este código URL de la página web cambiará para cada página.

 for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; </=>

Código final

Ahora, junte todos los códigos en un solo archivo para realizar la paginación.

Archivo: Index2.php

convertir cadena a carácter
 Pagination <?php //database connection $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } //define total number of results you want per page $results_per_page = 10; //find the total number of results stored in the database $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); //determine which page number visitor is currently on if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } //determine the sql LIMIT starting number for the results on the displaying page $page_first_result = ($page-1) * $results_per_page; //retrieve the selected results from database $query = 'SELECT *FROM alphabet LIMIT ' . $page_first_result . ',' . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row['id'] . ' ' . $row['alphabet'] . '</br>&apos;; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; } ?&gt; </=>

Producción:

Consulte el resultado a continuación para ver el ejemplo de paginación anterior:

Paginación PHP

Ejemplo 2

El siguiente ejemplo es otro ejemplo de paginación en el que utilizamos CSS junto con HTML para hacer que la vista de la página web sea más atractiva. CSS hace que la página web sea más creativa y atractiva. Por otro lado, MySQL almacena los datos en una base de datos. Así podrás aprender a paginar mucho mejor.

Hemos escrito el código completo en un solo archivo excepto la conectividad de la base de datos. Por lo tanto, crearemos dos archivos, es decir, conexión.php e index1.php. Guarde ambos archivos en .php extensión. En el siguiente ejemplo, aprenderá a crear una paginación más creativa y atractiva.

    PHP:Creado para la conectividad de bases de datosPHP:Creado para paginación

Archivo: conexión.php

 

Archivo: index1.php

supw
 Pagination table { border-collapse: collapse; } .inline{ display: inline-block; float: right; margin: 20px 0px; } input, button{ height: 34px; } .pagination { display: inline-block; } .pagination a { font-weight:bold; font-size:18px; color: black; float: left; padding: 8px 16px; text-decoration: none; border:1px solid black; } .pagination a.active { background-color: pink; } .pagination a:hover:not(.active) { background-color: skyblue; } <?php // Import the file where we defined the connection to Database. require_once 'connection.php'; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page=1; } $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query); ?> <br> <p>This page demonstrates the basic Pagination using PHP and MySQL. </p> <table class="table"> <tr> <th>ID</th> <th>Name</th> <th>College</th> <th>Score</th> </tr> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <?php $query = 'SELECT COUNT(*) FROM student'; $rs_result = mysqli_query($conn, $query); $row = mysqli_fetch_row($rs_result); $total_records = $row[0]; echo '</br>&apos;; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = &apos;&apos;; if($page&gt;=2){ echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } ?> <input id="page" type="number" min="1" max placeholder required> Go function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p> <strong>Output:</strong> </p> <p>See the below output for above pagination example -</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-3.webp" alt="PHP Pagination"> <p>Note that code written inside the tag is used for styling and to give an attractive look to the table and pagination present inside the webpage. We also used bootstrap for this.</p> <h3>Explanation of code</h3> <p>Now, we will explain the code used for creating pagination.</p> <h3>Database creation</h3> <p>First of all, create a database named by <strong>pagination</strong> as we created and a table inside it named <strong>student</strong> . Create attribute by name <strong>Rank, Name, College,</strong> and <strong>Score</strong> , and provide at least 25 records in the table.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-4.webp" alt="PHP Pagination"> <h3>Database Connectivity</h3> <p>Connecting the PHP file to the database is a required task. In this tutorial, we are using <strong>mysqli</strong> extension. So, all the queries are written according to mysqli format.</p> <p>Database connectivity code can be written in the same file or you can also keep it separate into another file and include it to your required PHP file. Code for database connection-</p> <pre> $conn = mysqli_connect(&apos;localhost&apos;, &apos;root&apos;, &apos;&apos;); if (! $conn) { die(&apos;Connection failed&apos; . mysqli_connect_error()); } else { mysqli_select_db($conn, &apos;pagination&apos;); } </pre> <h3>Fetch data and display on webpage</h3> <p>As we have created dataset, now we need to fetch and display it to various webpages. The below code is used to retrieve the data from database and display on the webpages that are divided accordingly.</p> <h3>Fetch data</h3> <p>After establishing the database connection in &apos;connection.php&apos; file, we just need to import it into our code using require_once keyword. We will explicitly define the number of records per page to show.</p> <pre> require_once &apos;connection.php&apos;; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); </pre> <h3>Display data</h3> <p>This section is very simple. In this section, we iterate the loop over the records that we fetched and display each record stored in columns of the table.</p> <pre> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </pre> <h3>Pagination Link creation</h3> <p>Now the most important code is pagination link creation. So, we will create the Previous, Next, and numeric links for pagination and add them to bottom of the table.</p> <pre> if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;></pre></1)?1:page));></$total_pages){></=$total_pages;>

Obtener datos y mostrarlos en la página web

Como hemos creado un conjunto de datos, ahora debemos buscarlo y mostrarlo en varias páginas web. El siguiente código se utiliza para recuperar los datos de la base de datos y mostrarlos en las páginas web que están divididas en consecuencia.

Obtener datos

Después de establecer la conexión de la base de datos en el archivo 'connection.php', solo necesitamos importarlo a nuestro código usando la palabra clave require_once. Definiremos explícitamente el número de registros por página a mostrar.

 require_once &apos;connection.php&apos;; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); 

Mostrar datos

Esta sección es muy sencilla. En esta sección, iteramos el ciclo sobre los registros que obtuvimos y mostramos cada registro almacenado en columnas de la tabla.

 <tr> <td></td> <td></td> <td></td> <td></td> </tr> 

Creación de enlaces de paginación

Ahora el código más importante es la creación de enlaces de paginación. Entonces, crearemos los enlaces Anterior, Siguiente y numéricos para la paginación y los agregaremos al final de la tabla.

 if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active\' href="index1.php?page=" .$i.\'\'>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo \' next \'; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;>