logo

PHP-paging

PHP wordt meestal gebruikt om gegevens uit een database op te slaan en weer te geven. Paginering kan met ajax, maar hier gebeurt dit met niet-ajax. In deze tutorial leren we de paginering in PHP met MySQL . Laten we een kort overzicht geven van paginering met een voorbeeld:

Het is mogelijk dat een SQL SELECT-query miljoenen records retourneert. Het is geen goed idee om alle records op één pagina weer te geven. Het laden van een grote lijst met records op één pagina kan veel tijd in beslag nemen en ook tijd kosten om specifieke gegevens te vinden. Dit kan de verwarring in de geest van de gebruiker veroorzaken (leiden). Verdeel deze records daarom over meerdere pagina's, afhankelijk van de gebruikersbehoefte.

Wat kunnen we doen om dit grote aantal records over meerdere pagina's te verdelen? De methode voor het distribueren van een enkele lijst over meerdere pagina's staat bekend als Paginering . Paging verwijst naar het weergeven van uw zoekresultaat op meerdere pagina's in plaats van op één pagina.

Wat is paginering?

Paginering is een manier om de gegevens op meerdere pagina's weer te geven in plaats van ze op één pagina te plaatsen. Paginering helpt om de records over meerdere pagina's te verdelen, waardoor de gegevens leesbaarder en begrijpelijker worden.

Paginering is een veel voorkomende taak voor PHP-ontwikkelaars. MySQL helpt de ontwikkelaar bij het maken van paginering met behulp van BEGRENZING clausule, waaraan twee argumenten moeten doorgegeven worden. Het eerste argument als OFFSET en het tweede argument is aantal records dat terugkeert uit de database.

Laten we eens kijken naar enkele voor- en nadelen van het gebruik van het pagineringsconcept in PHP -

int naar string-conversie

Voordelen van paginering

  • Paginering is erg handig bij grootschalige projecten omdat het het webwerk professioneler maakt. Niet alleen professioneler, maar het zorgt er ook voor dat de webpagina veel sneller, nauwkeuriger en efficiënter werkt.
  • Met behulp van paginering kunnen we de laadtijd van een pagina besparen door de gegevens over verschillende pagina’s te verdelen. Het bespaart ons het laden van veel informatie in één keer.
    Bijvoorbeeld - Een webpagina met 1000 afbeeldingen heeft meer tijd nodig om afbeeldingen te laden dan de 50 afbeeldingen op elke webpagina.
    Dit betekent dat duizenden afbeeldingen duizenden HTTP-verzoeken nodig hebben, waardoor de pagina niet meer reageert. Dit probleem wordt opgelost door de hoeveelheid gegevens te beperken met behulp van paginering met behulp van de LIMIT-clausule.
  • Het gebruik van paginering verbetert de gebruikerservaring, advertentie-inkomsten en verkort de laadtijd van de pagina.

Nadelen van paginering

Hoewel paginering een aantal krachtige voordelen heeft, vermijden veel ontwikkelaars het gebruik ervan. Naast enkele krachtige voordelen zijn er ook enkele nadelen van paginering, namelijk:

  • Paginering zelf is een grote overhead in PHP, wat een van de nadelen van paginering is. Het is volledig overhead, omdat het een externe functie is die kan worden geïmplementeerd ten koste van externe opmaak, styling en logica. Een kleine dataset die vaak wordt genegeerd om paginering te gebruiken.
  • Paginering kan leiden tot een lage paginarangschikking in de zoekmachine, omdat wanneer een pagina zich niet op de startpagina bevindt en meerdere klikken vereist, deze meestal geen hoge paginarangschikking krijgt.
  • Het beperkt ook het aantal links, sociale shares, het totale aantal resultaten tot zichtbaar op de webpagina en de ankertekst die een pagina ontvangt wanneer de informatie over meerdere pagina's is verdeeld.
U kunt het gebruik van pagineringstechniek vermijden door de structuur van uw navigatie-instellingen te wijzigen.

Implementatie van Paginering met PHP en MySQL

Om de paginering te kunnen implementeren, hebben we een grote dataset nodig om paginering erop toe te passen. Daarom moeten we eerst een database en tabel maken. Geef daarna de records in de tabel op en begin met coderen om paginering te maken. Zodat de gegevens die uit de database worden opgehaald over meerdere pagina's kunnen worden verdeeld.

Hier introduceren we twee voorbeelden van paginering. Het eerste voorbeeld is een eenvoudig en basisvoorbeeld van het maken van pagineringen zonder CSS, terwijl we in het tweede voorbeeld op een aantrekkelijke manier paginering zullen creëren met behulp van CSS en bootstrap. U kunt de uitvoer voor beide bekijken. Hieronder staan ​​de stappen voor het maken van paginering;

Eenvoudige stappen om paginering te maken -

  1. Maak een database en tabel. Geef een lijst met records op in de tabel.
  2. Maak verbinding met de MySQL-database.
  3. Maak de pagineringslink om de gegevens op meerdere pagina's te splitsen en toe te voegen aan de onderkant van de tabel.
  4. Haal gegevens op uit de database en geef deze weer op meerdere pagina's.

Volg de onderstaande stap één voor één en maak een eenvoudige paginering.

voorbeeld 1

De onderstaande code is een eenvoudig voorbeeld van paginering, uitgevoerd in PHP met behulp van de MySQL-database. Het verdeelt de gegevens die uit de database zijn opgehaald over verschillende pagina's. In dit voorbeeld maken we de paginering voor alfabetten die op meerdere pagina's moeten worden weergegeven.

Database creatie

Maak eerst een database met de naam by paginering zoals we hebben gemaakt en een tabel erin genaamd alfabet . Creëer een attribuut op naam ID kaart En alfabet en geef de gegevens in de tabel op.

PHP-paging

Databaseconnectiviteit

Het verbinden van het PHP-bestand met de database is een vereiste taak. Zodat u de gegevens die in de database zijn opgeslagen, op de webpagina kunt weergeven. Sluit daarom de database aan in uw PHP-bestand om gegevens op de webpagina weer te geven.

U kunt databaseconnectiviteitscode in hetzelfde bestand schrijven, maar u kunt deze ook apart in een ander bestand bewaren en deze in het gewenste PHP-bestand opnemen. Code voor databaseverbinding-

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

In deze tutorial gebruiken we mysqli verlenging. Alle query's zijn dus geschreven volgens het mysqli-formaat.

Haal het huidige paginanummer op

De onderstaande code bepaalt het paginanummer dat de gebruiker momenteel bezoekt. Als dit niet aanwezig is, wordt het paginanummer standaard ingesteld op 1.

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

Formule voor paginering

Voor paginering moet u de limiet instellen voor het aantal records dat per pagina moet worden weergegeven. Hier stellen we de limiet voor het resultaat per pagina in op 10, zodat het op elke pagina wordt weergegeven zoals hieronder weergegeven:

Pagina1 - A tot J (1-10)

Pagina 2 - K tot T (11-20)

Pagina3 - U tot Z (21-26)

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

Krijg het totale aantal pagina's

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

Gegevens ophalen en weergeven op webpagina

De onderstaande code wordt gebruikt om de gegevens uit de database op te halen en weer te geven op de webpagina's die dienovereenkomstig zijn verdeeld.

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

Geef de link van de pagina's weer in URL

Als u deze code gebruikt, verandert de URL van de webpagina voor elke pagina.

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

Laatste code

Plaats nu alle codes samen in één bestand om de paginering te voltooien.

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

Uitgang:

Zie de onderstaande uitvoer voor het bovenstaande pagineringsvoorbeeld -

PHP-paging

Voorbeeld 2

Het onderstaande voorbeeld is nog een voorbeeld van paginering waarbij we CSS samen met HTML hebben gebruikt om de weergave van webpagina's aantrekkelijker te maken. CSS maakt de webpagina creatiever en aantrekkelijker. Aan de andere kant slaat MySQL de gegevens op in de database. U kunt dus paginering veel beter leren.

We hebben de volledige code in één enkel bestand geschreven, behalve de databaseconnectiviteit. Daarom zullen we twee bestanden maken, namelijk Connection.php en index1.php. Sla beide bestanden op in .php verlenging. In het onderstaande voorbeeld leert u hoe u paginering creatiever en aantrekkelijker kunt maken.

    php:Gemaakt voor databaseconnectiviteitphp:Gemaakt voor paginering

Bestand: verbinding.php

 

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

Gegevens ophalen en weergeven op webpagina

Omdat we een dataset hebben gemaakt, moeten we deze nu ophalen en weergeven op verschillende webpagina's. De onderstaande code wordt gebruikt om de gegevens uit de database op te halen en weer te geven op de webpagina's die dienovereenkomstig zijn verdeeld.

Gegevens ophalen

Nadat we de databaseverbinding tot stand hebben gebracht in het 'connection.php'-bestand, hoeven we deze alleen maar in onze code te importeren met behulp van het trefwoord require_once. We zullen expliciet het aantal records per pagina definiëren dat moet worden weergegeven.

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

Gegevens weergeven

Dit gedeelte is heel eenvoudig. In deze sectie herhalen we de lus over de records die we hebben opgehaald en geven we elke record weer die is opgeslagen in de kolommen van de tabel.

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

Paginering Link aanmaken

De belangrijkste code is nu het maken van pagineringslinks. We zullen dus de Vorige, Volgende en numerieke links voor paginering maken en deze onderaan de tabel toevoegen.

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