logo

Paginació PHP

PHP s'utilitza principalment per emmagatzemar i mostrar dades d'una base de dades. La paginació es pot fer amb ajax, però aquí això es fa amb no ajax. En aquest tutorial, aprendrem el paginació en PHP amb MySQL . Fem una breu ressenya sobre la paginació amb un exemple:

És possible que una consulta SQL SELECT torni milions de registres. No és una bona idea mostrar tots els registres en una sola pàgina. Una llista gran de registres en una sola pàgina pot trigar molt de temps a carregar la pàgina i també consumir temps per trobar dades específiques. Això pot provocar (provocar) la confusió a la ment de l'usuari. Per tant, dividiu aquests registres en diverses pàgines segons el requisit de l'usuari.

Aleshores, què podem fer per distribuir aquest gran nombre de registres en nombre de pàgines? El mètode per distribuir una única llista en diverses pàgines es coneix com Paginació . La paginació fa referència a mostrar el resultat de la consulta en diverses pàgines en lloc d'una sola.

Què és la paginació?

La paginació és una manera de mostrar les dades en diverses pàgines en lloc de posar-les en una sola pàgina. La paginació ajuda a dividir els registres en diverses pàgines, cosa que fa que les dades siguin més llegibles i comprensibles.

La paginació és una tasca habitual per als desenvolupadors de PHP. MySQL ajuda el desenvolupador a crear paginació mitjançant l'ús LÍMIT clàusula, que pren dos arguments. El primer argument com OFFSET i el segon argument és nombre de registres que tornarà de la base de dades.

qui va inventar l'escola

Vegem alguns avantatges i desavantatges d'utilitzar el concepte de paginació a PHP:

Avantatges de la paginació

  • La paginació és molt útil en projectes a gran escala perquè fa que el treball web sigui més professional. No només és més professional, sinó que també fa que la pàgina web funcioni molt més ràpid, precisa i eficient.
  • Amb l'ajuda de la paginació, podem estalviar el temps de càrrega d'una pàgina dividint les dades en diverses pàgines. Ens estalvia de carregar molta informació alhora.
    Per exemple - Una pàgina web amb 1.000 imatges trigarà més temps a carregar-se que les 50 imatges de cada pàgina web.
    Això vol dir que milers d'imatges necessiten milers de sol·licituds HTTP, cosa que faria que la pàgina no respongués. Aquest problema es resol limitant la quantitat de dades amb l'ajuda de la paginació mitjançant la clàusula LIMIT.
  • L'ús de la paginació millora l'experiència de l'usuari, els ingressos publicitaris i disminueix el temps de càrrega de la pàgina.

Inconvenients de la paginació

Tot i que la paginació té alguns avantatges poderosos, molts desenvolupadors eviten utilitzar-la. Juntament amb alguns avantatges poderosos, també hi ha pocs desavantatges de la paginació, que són els següents:

  • La paginació en si és una gran sobrecàrrega en PHP, que és un dels desavantatges de la paginació. És completament una sobrecàrrega, ja que és una característica externa que es pot implementar amb el cost de l'etiquetatge, l'estil i la lògica aliens. Un petit conjunt de dades sovint ignorat per utilitzar la paginació.
  • La paginació pot provocar un rang de pàgina baix al motor de cerca perquè quan una pàgina està lluny de la pàgina d'inici i requereix diversos clics, normalment no aconsegueix un rang de pàgina alt.
  • També limita el nombre d'enllaços, les comparticions socials, el nombre total de resultats visibles a la pàgina web i el text d'ancoratge que rep una pàgina quan la informació es divideix en diverses pàgines.
Podeu evitar l'ús de la tècnica de paginació modificant l'estructura de la configuració de navegació.

Implementació de la paginació amb PHP i MySQL

Per implementar la paginació, necessitem un gran conjunt de dades per aplicar-hi la paginació. Per tant, primer hem de crear una base de dades i una taula. Després d'això, proporcioneu els registres a la taula i comenceu a codificar per crear la paginació. De manera que les dades obtingudes de la base de dades es poden dividir en diverses pàgines.

Aquí presentarem dos exemples de paginació. El primer exemple és un exemple senzill i bàsic de creació de paginació sense CSS, mentre que en el segon exemple, crearem paginació d'una manera atractiva utilitzant CSS i bootstrap. Podeu veure la sortida de tots dos. A continuació es mostren els passos donats per a la creació de la paginació;

java privat vs públic

Passos senzills per crear una paginació -

  1. Crea una base de dades i una taula. Proporcioneu una llista de registres a la taula.
  2. Connecteu-vos amb la base de dades MySQL.
  3. Creeu l'enllaç de paginació per dividir les dades en diverses pàgines i afegir-les a la part inferior de la taula.
  4. Obteniu dades de la base de dades i visualitzeu-les a diverses pàgines.

Seguiu el pas següent un per un i creeu una paginació senzilla.

Exemple 1

El codi següent és un exemple senzill de paginació, que es fa en PHP amb l'ajuda de la base de dades MySQL. Divideix les dades obtingudes de la base de dades en diverses pàgines. En aquest exemple, crearem la paginació dels alfabets que es mostraran en diverses pàgines.

Creació de bases de dades

En primer lloc, creeu una base de dades anomenada per paginació tal com vam crear i s'anomena una taula dins alfabet . Crea un atribut pel nom id i alfabet , i proporcioneu les dades a la taula.

Paginació PHP

Connectivitat de bases de dades

Connectar el fitxer PHP a la base de dades és una tasca obligatòria. Perquè pugueu mostrar les dades emmagatzemades a la base de dades a la pàgina web. Per tant, connecteu la base de dades al vostre fitxer PHP per mostrar dades a la pàgina web.

Podeu escriure el codi de connectivitat de la base de dades al mateix fitxer i també mantenir-lo separat en un altre fitxer i incloure-lo al fitxer PHP necessari. Codi per a la connexió de la base de dades-

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

En aquest tutorial, estem utilitzant mysqli extensió. Per tant, totes les consultes s'escriuen segons el format mysqli.

Obteniu el número de pàgina actual

El codi següent determina el número de pàgina que l'usuari està visitant actualment. En cas que no estigui present, per defecte s'estableix el número de pàgina a 1.

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

Fórmula per a la paginació

Per a la paginació, cal establir el límit de nombre de registres que es mostraran per pàgina. Aquí, establim el límit de resultats per pàgina a 10, de manera que es mostrarà a cada pàgina tal com es mostra a continuació:

Pàgina 1 - A a J (1-10)

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

Pàgina 3 - de la U a la Z (21-26)

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

Obteniu el nombre total de pàgines

 $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 dades i mostrar-les a la pàgina web

El codi següent s'utilitza per recuperar les dades de la base de dades i mostrar-les a les pàgines web que es divideixen en conseqüència.

 $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;; } 

Mostra l'enllaç de les pàgines a l'URL

L'ús d'aquest codi URL de la pàgina web canviarà per a cada pàgina.

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

Codi final

Ara, poseu tots els codis junts en un sol fitxer per fer la paginació.

Fitxer: index2.php

lliure vs lliure
 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; </=>

Sortida:

Vegeu la sortida següent per a l'exemple de paginació anterior:

Paginació PHP

Exemple 2

L'exemple següent és un altre exemple de paginació en què hem utilitzat CSS juntament amb HTML per fer que la visualització de la pàgina web sigui més atractiva. CSS fa que la pàgina web sigui més creativa i atractiva. D'altra banda, MySQL emmagatzema les dades a la base de dades. Per tant, podeu aprendre molt millor la paginació.

Hem escrit el codi sencer en un sol fitxer excepte la connectivitat de la base de dades. Per tant, crearem dos fitxers, és a dir, connection.php i index1.php. Deseu els dos fitxers .php extensió. En l'exemple següent, aprendràs a crear una paginació més creativa i atractiva.

    php:Creat per a la connectivitat de bases de dadesphp:Creat per a la paginació

Fitxer: connection.php

 

Fitxer: index1.php

canviar el nom d'un directori
 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;>

Obteniu dades i mostreu-les a la pàgina web

Com que hem creat el conjunt de dades, ara hem d'aconseguir-lo i mostrar-lo a diverses pàgines web. El codi següent s'utilitza per recuperar les dades de la base de dades i mostrar-les a les pàgines web que es divideixen en conseqüència.

Obtenir dades

Després d'establir la connexió de la base de dades al fitxer 'connection.php', només hem d'importar-lo al nostre codi mitjançant la paraula clau require_once. Definirem explícitament el nombre de registres per pàgina per 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); 

Mostra dades

Aquesta secció és molt senzilla. En aquesta secció, repetim el bucle sobre els registres que hem obtingut i mostrem cada registre emmagatzemat en columnes de la taula.

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

Creació d'enllaços de paginació

Ara el codi més important és la creació d'enllaços de paginació. Per tant, crearem els enllaços anterior, següent i numèric per a la paginació i els afegirem a la part inferior de la taula.

 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;>