logo

PHP paginacija

PHP se večinoma uporablja za shranjevanje in prikaz podatkov iz baze podatkov. Paginacija se lahko izvede z ajaxom, tukaj pa je to narejeno z ne-ajaxom. V tej vadnici se bomo naučili paginacija v PHP z MySQL . Oglejmo si kratek pregled paginacije s primerom -

Možno je, da poizvedba SQL SELECT vrne na milijone zapisov nazaj. Ni dobro prikazati vseh zapisov na eni strani. Velik seznam zapisov na eni sami strani lahko traja toliko časa, da se naloži stran, prav tako pa porabi čas za iskanje določenih podatkov. To lahko povzroči (povzroči) zmedo v mislih uporabnika. Zato te zapise razdelite na več strani glede na zahteve uporabnika.

Torej, kaj lahko storimo, da porazdelimo to veliko število zapisov na število strani? Metoda razdelitve enega seznama na več strani je znana kot Paginacija . Ostranjevanje se nanaša na prikaz rezultatov poizvedbe na več straneh namesto na eni strani.

Kaj je paginacija?

Paginacija je način prikaza podatkov na več straneh, namesto da bi jih postavili na eno stran. Paginacija pomaga razdeliti zapise na več strani, kar naredi podatke bolj berljive in razumljive.

Paginacija je pogosta naloga razvijalcev PHP. MySQL pomaga razvijalcu ustvariti paginacijo z uporabo OMEJITEV klavzula, ki sprejme dva argumenta. Prvi argument kot OFFSET in drugi argument je število zapisov ki se bo vrnil iz baze podatkov.

Oglejmo si nekaj prednosti in slabosti uporabe koncepta paginacije v PHP -

java primerljiva

Prednosti paginacije

  • Označevanje strani je zelo uporabno pri velikih projektih, saj naredi spletno delo bolj profesionalno. Ne samo, da je bolj profesionalen, ampak tudi poskrbi, da spletna stran deluje veliko hitreje, natančneje in učinkoviteje.
  • S pomočjo paginacije lahko prihranimo čas nalaganja strani tako, da podatke razdelimo na različne strani. Prihrani nam nalaganje veliko informacij hkrati.
    Na primer - Spletna stran s 1000 slikami bo potrebovala več časa za nalaganje slik kot 50 slik na posamezni spletni strani.
    To pomeni, da na tisoče slik potrebuje na tisoče zahtev HTTP, zaradi česar se stran ne bi odzivala. To težavo rešimo z omejitvijo količine podatkov s pomočjo paginacije z uporabo klavzule LIMIT.
  • Uporaba paginacije izboljša uporabniško izkušnjo, prihodek od oglaševanja in zmanjša čas nalaganja strani.

Slabosti paginacije

Čeprav obstaja nekaj močnih prednosti označevanja strani, se ga mnogi razvijalci izogibajo. Poleg nekaterih močnih prednosti obstaja tudi nekaj slabosti paginacije, ki so naslednje:

  • Paginacija sama po sebi je velik dodatek v PHP, kar je ena od slabosti paginacije. To je popolnoma režijski strošek, saj je zunanja funkcija, ki jo je mogoče implementirati za stroške tujih oznak, stilov in logike. Majhen nabor podatkov, ki je pogosto prezrt zaradi uporabe paginacije.
  • Paginacija lahko povzroči nizko uvrstitev strani v iskalniku, ker ko je stran stran od domače strani in zahteva več klikov, običajno ne dobi visoke uvrstitve strani.
  • Prav tako omejuje število povezav, skupno rabo v družabnih omrežjih, skupno število rezultatov na vidne na spletni strani in sidrno besedilo, ki ga prejme stran, ko so informacije razdeljene na več strani.
Uporabi tehnike označevanja strani se lahko izognete tako, da spremenite strukturo vaše navigacijske nastavitve.

Implementacija paginacije s PHP in MySQL

Za izvedbo paginacije potrebujemo velik nabor podatkov, da lahko zanj uporabimo paginacijo. Zato moramo najprej ustvariti bazo podatkov in tabelo. Po tem zagotovite zapise v tabeli in začnite kodirati, da ustvarite paginacijo. Tako da lahko podatke, pridobljene iz baze podatkov, razdelimo na več strani.

Tukaj bomo predstavili dva primera paginacije. Prvi primer je preprost in osnovni primer ustvarjanja paginacije brez CSS, medtem ko bomo v drugem primeru ustvarili paginacijo na privlačen način z uporabo CSS in bootstrapa. Vidite lahko izhod za oba. Spodaj so navedeni koraki za ustvarjanje paginacije;

Preprosti koraki za ustvarjanje paginacije -

  1. Ustvari bazo podatkov in tabelo. V tabelo vnesite seznam zapisov.
  2. Povežite se z bazo podatkov MySQL.
  3. Ustvarite povezavo do strani, da razdelite podatke na več strani in jih dodate na dno tabele.
  4. Pridobite podatke iz baze podatkov in jih prikažite na več straneh.

Sledite spodnjim korakom enega za drugim in ustvarite preprosto paginacijo.

Primer 1

Spodnja koda je preprost primer paginacije, ki se izvede v PHP s pomočjo podatkovne baze MySQL. Podatke, pridobljene iz baze podatkov, razdeli na več strani. V tem primeru bomo ustvarili paginacijo za abecede, ki bodo prikazane na več straneh.

Izdelava baze podatkov

Najprej ustvarite zbirko podatkov z imenom paginacija kot smo ustvarili in poimenovali tabelo v njej abeceda . Ustvari atribut po imenu id in abeceda , in vnesite podatke v tabelo.

PHP paginacija

Povezljivost baze podatkov

Povezovanje datoteke PHP z bazo podatkov je obvezna naloga. Da lahko na spletni strani prikažete podatke, shranjene v bazi podatkov. Zato povežite bazo podatkov v vaši datoteki PHP za prikaz podatkov na spletni strani.

Kodo za povezljivost baze podatkov lahko napišete v isto datoteko in jo tudi hranite ločeno v drugi datoteki ter jo vključite v zahtevano datoteko PHP. Koda za povezavo z bazo podatkov -

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

V tej vadnici uporabljamo mysqli razširitev. Torej so vse poizvedbe napisane v formatu mysqli.

pokaži skrite aplikacije

Pridobite trenutno številko strani

Spodnja koda določa številko strani, ki jo uporabnik trenutno obiskuje. V primeru, da ni prisoten, je privzeto nastavljena številka strani na 1.

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

Formula za paginacijo

Za paginacijo morate nastaviti omejitev števila zapisov, ki bodo prikazani na stran. Tukaj smo nastavili omejitev za rezultat na stran na 10, tako da bo prikazan na vsaki strani, kot je navedeno spodaj -

Stran 1 - A do J (1-10)

Stran 2 - K do T (11-20)

Stran 3 - U do Ž (21-26)

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

Pridobite skupno število strani

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

Pridobivanje podatkov in prikaz na spletni strani

Spodnja koda se uporablja za pridobivanje podatkov iz baze podatkov in prikaz na spletnih straneh, ki so ustrezno razdeljene.

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

Prikažite povezavo strani v URL-ju

Z uporabo te kode se bo URL spletne strani spremenil za vsako stran.

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

Končna koda

Zdaj združite vse kode v eno datoteko, da opravite paginacijo.

Datoteka: Index2.php

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

Izhod:

Oglejte si spodnji rezultat za zgornji primer paginacije -

enako java
PHP paginacija

Primer 2

Spodnji primer je še en primer paginacije, pri katerem smo uporabili CSS skupaj s HTML, da bi naredili pogled spletne strani privlačnejši. CSS naredi spletno stran bolj kreativno in privlačno. Po drugi strani MySQL shranjuje podatke v bazo podatkov. Tako se lahko veliko bolje naučite paginacije.

Celotno kodo smo napisali v eni sami datoteki, razen povezave z bazo podatkov. Zato bomo ustvarili dve datoteki, tj.connection.php in index1.php. Shranite obe datoteki .php razširitev. V spodnjem primeru se boste naučili ustvarjati bolj kreativno in privlačno paginacijo.

    php:Ustvarjen za povezljivost z bazo podatkovphp:Ustvarjeno za paginacijo

Datoteka: connection.php

 

Datoteka: index1.php

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

Pridobite podatke in jih prikažite na spletni strani

Ko smo ustvarili nabor podatkov, ga moramo zdaj pridobiti in prikazati na različnih spletnih straneh. Spodnja koda se uporablja za pridobivanje podatkov iz baze podatkov in prikaz na spletnih straneh, ki so ustrezno razdeljene.

Pridobi podatke

Ko vzpostavimo povezavo z bazo podatkov v datoteki 'connection.php', jo moramo samo uvoziti v našo kodo s ključno besedo require_once. Izrecno bomo določili število zapisov na stran za prikaz.

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

Prikaz podatkov

Ta del je zelo preprost. V tem razdelku ponovimo zanko čez zapise, ki smo jih pridobili, in prikažemo vsak zapis, shranjen v stolpcih tabele.

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

Ustvarjanje stranične povezave

Sedaj je najpomembnejša koda ustvarjanje stranične povezave. Tako bomo ustvarili Prejšnjo, Naslednjo in številske povezave za označevanje strani ter jih dodali na dno tabele.

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