logo

Paginare PHP

PHP este folosit mai ales pentru a stoca și afișa date dintr-o bază de date. Paginarea se poate face cu ajax, dar aici aceasta se face cu non-ajax. În acest tutorial, vom învăța paginarea în PHP cu MySQL . Să facem o scurtă trecere în revistă despre paginare cu un exemplu -

windows.deschide javascript

Este posibil ca o interogare SQL SELECT să returneze milioane de înregistrări înapoi. Nu este o idee bună să afișați toate înregistrările pe o singură pagină. O listă mare de înregistrări pe o singură pagină poate dura atât de mult timp pentru a încărca pagina și, de asemenea, poate consuma timp pentru a găsi anumite date. Acest lucru poate cauza (conduce la) confuzie în mintea utilizatorului. Prin urmare, împărțiți aceste înregistrări pe mai multe pagini în funcție de cerințele utilizatorului.

Deci, ce putem face pentru a distribui acest număr mare de înregistrări în număr de pagini? Metoda de distribuire a unei singure liste în mai multe pagini este cunoscută ca Paginare . Paginare se referă la afișarea rezultatului interogării pe mai multe pagini în loc de o singură pagină.

Ce este paginarea?

Paginarea este o modalitate de a afișa datele pe mai multe pagini, mai degrabă decât de a le pune pe o singură pagină. Paginarea ajută la împărțirea înregistrărilor pe mai multe pagini, ceea ce face ca datele să fie mai lizibile și mai ușor de înțeles.

Paginarea este o sarcină comună pentru dezvoltatorii PHP. MySQL ajută dezvoltatorul să creeze paginarea utilizând LIMITĂ clauză, care are două argumente. Primul argument ca DECALAJ iar al doilea argument este numărul de înregistrări care se va întoarce din baza de date.

Să ne uităm la câteva avantaje și dezavantaje ale utilizării conceptului de paginare în PHP -

Avantajele paginarii

  • Paginarea este foarte utilă în proiecte la scară largă, deoarece face munca web mai profesională. Nu doar mai profesionist, dar face ca pagina web să funcționeze mult mai rapid, precis și eficient.
  • Cu ajutorul paginarii, putem economisi timpul de incarcare al unei pagini impartind datele pe diverse pagini. Ne scutește de încărcarea multor informații simultan.
    De exemplu - O pagină web cu 1000 de imagini va dura mai mult timp pentru a încărca imagini decât cele 50 de imagini de pe fiecare pagină web.
    Aceasta înseamnă că mii de imagini au nevoie de mii de solicitări HTTP, ceea ce ar face ca pagina să nu răspundă. Această problemă este rezolvată prin limitarea cantității de date cu ajutorul paginației folosind clauza LIMIT.
  • Utilizarea paginarii îmbunătățește experiența utilizatorului, veniturile din publicitate și scade timpul de încărcare a paginii.

Dezavantajele paginarii

Deși există câteva avantaje puternice ale paginației, totuși mulți dezvoltatori evită să o folosească. Pe lângă unele avantaje puternice, există și câteva dezavantaje ale paginației, care sunt următoarele:

  • Paginarea în sine este o suprasarcină mare în PHP, care este unul dintre dezavantajele paginației. Este complet o suprasolicitare, deoarece este o caracteristică externă care poate fi implementată cu costul markupurilor, stilului și logicii străine. Un set mic de date adesea ignorat pentru a utiliza paginarea.
  • Paginarea poate cauza un rang scăzut al paginii pe motorul de căutare, deoarece atunci când o pagină este departe de pagina principală și necesită mai multe clicuri, de obicei nu obține un rang înalt al paginii.
  • De asemenea, limitează numărul de link-uri, distribuirile sociale, numărul total de rezultate vizibile pe pagina web și textul ancora pe care îl primește o pagină atunci când informațiile sunt împărțite pe mai multe pagini.
Puteți evita utilizarea tehnicii de paginare modificând structura configurației de navigare.

Implementarea paginarii cu PHP si MySQL

Pentru a implementa paginarea, avem nevoie de un set de date mare pentru a-i aplica paginarea. Prin urmare, mai întâi trebuie să creăm o bază de date și un tabel. După aceea, furnizați înregistrările în tabel și începeți codarea pentru a crea paginarea. Pentru ca datele preluate din baza de date să poată fi împărțite pe mai multe pagini.

java replaceall

Aici vom introduce două exemple de paginare. Primul exemplu este un exemplu simplu și de bază de creare de paginare fără CSS, în timp ce în al doilea exemplu, vom crea paginarea într-un mod atractiv folosind CSS și bootstrap. Puteți vedea rezultatul pentru ambele. Mai jos sunt pașii dați pentru crearea paginației;

Pași simpli pentru a crea paginarea -

  1. Creați o bază de date și un tabel. Furnizați o listă de înregistrări în tabel.
  2. Conectați-vă la baza de date MySQL.
  3. Creați linkul de paginare pentru a împărți datele pe mai multe pagini și adăugați-le în partea de jos a tabelului.
  4. Preluați date din baza de date și afișați-le pe mai multe pagini.

Urmați pasul de mai jos unul câte unul și creați o paginare simplă.

Exemplul 1

Codul de mai jos este un exemplu simplu de paginare, care se face în PHP cu ajutorul bazei de date MySQL. Împarte datele preluate din baza de date pe mai multe pagini. În acest exemplu, vom crea paginarea pentru alfabete care urmează să fie afișate pe mai multe pagini.

Crearea bazei de date

În primul rând, creați o bază de date numită de paginare așa cum am creat și un tabel din interior numit alfabet . Creați un atribut după nume id și alfabet , și furnizați datele din tabel.

Paginare PHP

Conectivitate la baza de date

Conectarea fișierului PHP la baza de date este o sarcină necesară. Astfel încât să puteți afișa datele stocate în baza de date pe pagina web. Prin urmare, conectați baza de date în fișierul dvs. PHP pentru a afișa date pe pagina web.

Puteți scrie codul de conectare la baza de date în același fișier, precum și să îl păstrați separat într-un alt fișier și să îl includeți în fișierul PHP necesar. Cod pentru conexiunea la baza de date -

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

În acest tutorial, folosim mysqli extensie. Deci, toate interogările sunt scrise în format mysqli.

Obțineți numărul actual al paginii

Codul de mai jos determină numărul paginii pe care utilizatorul o vizitează în prezent. În cazul în care nu este prezent, în mod implicit este setat numărul paginii la 1.

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

Formula pentru paginare

Pentru paginare, trebuie să setați limita numărului de înregistrări care trebuie afișate pe pagină. Aici, am stabilit limita pentru rezultat pe pagină la 10, așa că va fi afișată pe fiecare pagină așa cum este prezentat mai jos -

Pagina 1 - de la A la J (1-10)

Pagina 2 - K la T (11-20)

textul îngroșat în css

Pagina 3 - de la U la Z (21-26)

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

Obțineți numărul total de pagini

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

Preluați date și afișați pe pagina web

Codul de mai jos este folosit pentru a prelua datele din baza de date și pentru a le afișa pe paginile web care sunt împărțite corespunzător.

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

Afișează linkul paginilor în URL

Utilizarea acestui cod URL a paginii web se va modifica pentru fiecare pagină.

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

Cod final

Acum, puneți toate codurile împreună într-un singur fișier pentru a termina paginarea.

modele de design java

Fișier: 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; </=>

Ieșire:

Vedeți rezultatul de mai jos pentru exemplul de paginare de mai sus -

Paginare PHP

Exemplul 2

Exemplul de mai jos este un alt exemplu de paginare în care am folosit CSS împreună cu HTML pentru a face vizualizarea paginii web mai atractivă. CSS face pagina web mai creativă și mai atractivă. Pe de altă parte, MySQL stochează datele în baza de date. Deci, puteți învăța mult mai bine paginarea.

Am scris întreg codul într-un singur fișier, cu excepția conectivității bazei de date. Prin urmare, vom crea două fișiere, adică connection.php și index1.php. Salvați ambele fișiere în .php extensie. În exemplul de mai jos, veți învăța să creați o paginare mai creativă și mai atractivă.

hibernare dialect
    php:Creat pentru conectivitate la baza de datephp:Creat pentru paginare

Fișier: connection.php

 

Fișier: 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;>

Preluați datele și afișați-le pe pagina web

Pe măsură ce am creat un set de date, acum trebuie să îl preluăm și să îl afișăm în diferite pagini web. Codul de mai jos este folosit pentru a prelua datele din baza de date și pentru a le afișa pe paginile web care sunt împărțite corespunzător.

Preluați date

După stabilirea conexiunii la baza de date în fișierul „connection.php”, trebuie doar să o importăm în codul nostru folosind cuvântul cheie require_once. Vom defini în mod explicit numărul de înregistrări pe pagină de afișat.

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

Afișează date

Această secțiune este foarte simplă. În această secțiune, repetăm ​​bucla peste înregistrările pe care le-am preluat și afișăm fiecare înregistrare stocată în coloanele tabelului.

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

Crearea linkului de paginare

Acum, cel mai important cod este crearea linkurilor de paginare. Deci, vom crea linkurile Previous, Next și numerice pentru paginare și le vom adăuga în partea de jos a tabelului.

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