PHP se uglavnom koristi za pohranu i prikaz podataka iz baze podataka. Paginacija se može napraviti s ajaxom, ali ovdje se to radi s ne-ajaxom. U ovom vodiču ćemo naučiti paginacija u PHP-u s MySQL-om . Uzmimo kratki pregled paginacije s primjerom -
Moguće je da SQL SELECT upit može vratiti milijune zapisa. Nije dobra ideja prikazati sve zapise na jednoj stranici. Velikom popisu zapisa na jednoj stranici može trebati toliko vremena da se učita stranica i također potrošiti vrijeme na pronalaženje određenih podataka. To može izazvati (dovesti do) zbunjenost u umu korisnika. Stoga podijelite ove zapise na nekoliko stranica prema zahtjevima korisnika.
Dakle, što možemo učiniti da distribuiramo ovaj veliki broj zapisa na broj stranica? Metoda distribucije jednog popisa na više stranica poznata je kao Paginacija . Straničenje se odnosi na prikazivanje rezultata vašeg upita na više stranica umjesto na jednoj stranici.
Što je paginacija?
Paginacija je način prikazivanja podataka na više stranica umjesto njihovog stavljanja na jednu stranicu. Paginacija pomaže podijeliti zapise na nekoliko stranica, što čini podatke čitljivijim i razumljivijim.
Paginacija je čest zadatak za PHP programere. MySQL pomaže programeru da stvori paginaciju korištenjem OGRANIČITI klauzula, koja uzima dva argumenta. Prvi argument kao OFFSET a drugi argument je broj zapisa koji će se vratiti iz baze podataka.
Pogledajmo neke prednosti i nedostatke korištenja koncepta paginacije u PHP-u -
Prednosti paginacije
- Označavanje stranica je vrlo korisno u velikim projektima jer webwork čini profesionalnijim. Ne samo da je profesionalniji, već također čini da web stranica radi mnogo brže, preciznije i učinkovitije.
- Uz pomoć paginacije možemo uštedjeti vrijeme učitavanja stranice dijeljenjem podataka na različite stranice. Spašava nas od učitavanja puno informacija odjednom.
Na primjer - Web stranici s 1000 slika trebat će više vremena za učitavanje slika nego 50 slika na svakoj web stranici.
To znači da tisuće slika zahtijevaju tisuće HTTP zahtjeva, zbog čega bi stranica prestala reagirati. Ovaj problem je riješen ograničavanjem količine podataka uz pomoć paginacije pomoću klauzule LIMIT. - Korištenje paginacije poboljšava korisničko iskustvo, prihod od oglašavanja i smanjuje vrijeme učitavanja stranice.
Nedostaci paginacije
Iako postoje neke snažne prednosti paginacije, mnogi programeri je ipak izbjegavaju koristiti. Uz neke snažne prednosti, postoji i nekoliko nedostataka paginacije, koji su sljedeći:
- Paginacija sama po sebi je veliki trošak u PHP-u, što je jedan od nedostataka paginacije. To je u potpunosti dodatni trošak jer se radi o vanjskoj značajci koja se može implementirati uz cijenu nepotrebnog označavanja, stiliziranja i logike. Mali skup podataka koji se često zanemaruje za korištenje paginacije.
- Paginacija može uzrokovati nizak rang stranice na tražilici jer kada je stranica udaljena od početne stranice i zahtijeva nekoliko klikova, obično ne dobije visok rang stranice.
- Također ograničava broj veza, dijeljenja na društvenim mrežama, ukupni broj rezultata na vidljive na web-stranici i sidreni tekst koji stranica prima kada su informacije podijeljene na nekoliko stranica.
Možete izbjeći korištenje tehnike označavanja stranica izmjenom strukture vaših navigacijskih postavki.
Implementacija paginacije s PHP-om i MySQL-om
Kako bismo implementirali paginaciju, potreban nam je veliki skup podataka da bismo na njega primijenili paginaciju. Dakle, prvo moramo napraviti bazu podataka i tablicu. Nakon toga unesite zapise u tablicu i počnite s kodiranjem za izradu paginacije. Tako da se podaci dohvaćeni iz baze podataka mogu podijeliti na nekoliko stranica.
Ovdje ćemo predstaviti dva primjera paginacije. Prvi primjer je jednostavan i osnovni primjer izrade paginacije bez CSS-a, dok ćemo u drugom primjeru napraviti paginaciju na atraktivan način koristeći CSS i bootstrap. Možete vidjeti izlaz za oba. Ispod su navedeni koraci za izradu paginacije;
Jednostavni koraci za stvaranje paginacije -
- Napravite bazu podataka i tablicu. Unesite popis zapisa u tablicu.
- Povežite se s MySQL bazom podataka.
- Stvorite vezu za paginaciju da biste podijelili podatke na više stranica i dodali ih na dno tablice.
- Dohvatite podatke iz baze podataka i prikažite ih na više stranica.
Slijedite korake u nastavku jedan po jedan i izradite jednostavno označavanje stranica.
liste od lateksa
Primjer 1
Donji kod je jednostavan primjer paginacije, koja se radi u PHP-u uz pomoć MySQL baze podataka. Podatke dohvaćene iz baze podataka dijeli na nekoliko stranica. U ovom primjeru izradit ćemo paginaciju za abecede koje će se prikazati na nekoliko stranica.
Izrada baze podataka
Prije svega, stvorite bazu podataka pod imenom paginacija kao što smo stvorili i tablicu unutar nje nazvanu abeceda . Stvorite atribut prema imenu iskaznica i abeceda , te unesite podatke u tablicu.
instaliraj maven
Povezivost baze podataka
Povezivanje PHP datoteke s bazom podataka obavezan je zadatak. Tako da možete prikazati podatke pohranjene u bazi podataka na web stranici. Stoga povežite bazu podataka u vašoj PHP datoteci za prikaz podataka na web stranici.
Možete pisati kod za povezivanje baze podataka u istoj datoteci, kao i držati ga odvojeno u drugoj datoteci i uključiti ga u vašu potrebnu PHP datoteku. Kod za povezivanje s bazom podataka-
$conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); }
U ovom vodiču koristimo mysqli proširenje. Dakle, svi upiti su napisani prema mysqli formatu.
Dobijte trenutni broj stranice
Donji kod određuje broj stranice koju korisnik trenutno posjećuje. U slučaju da nije prisutan, prema zadanim postavkama postavljen je broj stranice na 1.
if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; }
Formula za paginaciju
Za paginaciju morate postaviti ograničenje broja zapisa koji će se prikazati po stranici. Ovdje smo postavili ograničenje za rezultat po stranici na 10, tako da će se prikazati na svakoj stranici kako je navedeno u nastavku -
Stranica 1 - A do J (1-10)
Stranica 2 - K do T (11-20)
Stranica 3 - U do Z (21-26)
$results_per_page = 10; $page_first_result = ($page-1) * $results_per_page;
Dobiti ukupan broj stranica
$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);
Dohvaćanje podataka i prikaz na web stranici
Kôd u nastavku koristi se za dohvaćanje podataka iz baze podataka i prikaz na web stranicama koje su podijeljene na odgovarajući način.
$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>'; }
Prikažite vezu stranica u URL-u
Korištenjem ovog koda URL web stranice će se promijeniti za svaku stranicu.
for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; </=>
Konačni kod
Sada stavite sve kodove u jednu datoteku da biste izvršili paginaciju.
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>'; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; } ?> </=>
Izlaz:
Pogledajte donji izlaz za gornji primjer označavanja stranica -
Primjer 2
Donji primjer je još jedan primjer paginacije u kojem smo koristili CSS zajedno s HTML-om kako bismo prikaz web stranice učinili privlačnijim. CSS čini web stranicu kreativnijom i privlačnijom. S druge strane, MySQL pohranjuje podatke u bazu podataka. Dakle, možete puno bolje naučiti numeriranje stranica.
Napisali smo cijeli kod u jednoj datoteci osim povezivanja baze podataka. Stoga ćemo kreirati dvije datoteke, tj. connection.php i index1.php. Spremite obje datoteke .php proširenje. U donjem primjeru naučit ćete stvarati kreativnije i privlačnije označavanje stranica.
Datoteka: veza.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>'; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = ''; if($page>=2){ echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active' href="index1.php?page=" .$i.''>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; 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('page').value; page = ((page>)?:((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('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } </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 'connection.php' 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 '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; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $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>=2) { echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active' href="index1.php?page=" .$i.''>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; 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('page').value; page = ((page>)?:((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;>
Dohvaćanje podataka i prikaz na web stranici
Kako smo izradili skup podataka, sada ga moramo dohvatiti i prikazati na raznim web stranicama. Kôd u nastavku koristi se za dohvaćanje podataka iz baze podataka i prikaz na web stranicama koje su podijeljene na odgovarajući način.
valjani identifikatori u Javi
Dohvaćanje podataka
Nakon uspostavljanja veze s bazom podataka u datoteci 'connection.php', samo je trebamo uvesti u naš kod pomoću ključne riječi require_once. Eksplicitno ćemo definirati broj zapisa po stranici za prikaz.
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; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query);
Prikaz podataka
Ovaj odjeljak je vrlo jednostavan. U ovom odjeljku ponavljamo petlju preko zapisa koje smo dohvatili i prikazujemo svaki zapis pohranjen u stupcima tablice.
<tr> <td></td> <td></td> <td></td> <td></td> </tr>
Stvaranje veze za paginaciju
Sada je najvažniji kod stvaranje veze za paginaciju. Dakle, stvorit ćemo Prethodno, Sljedeće i numeričke veze za paginaciju i dodati ih na dno tablice.
if($page>=2) { echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active\' href="index1.php?page=" .$i.\'\'>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; 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('page').value; page = ((page>)?:((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;>
1)?1:page));>$total_pages){>=$total_pages;>1)?1:page));>$total_pages){>=$total_pages;>