logo

PHP paginering

PHP används mest för att lagra och visa data från en databas. Paginering kan göras med ajax, men här görs detta med icke-ajax. I den här handledningen kommer vi att lära oss paginering i PHP med MySQL . Låt oss ta en kort recension om paginering med ett exempel -

Det är möjligt att en SQL SELECT-fråga kan returnera miljontals poster. Det är inte en bra idé att visa alla poster på en enda sida. En stor lista med poster på en enda sida kan ta så lång tid att ladda sidan och även ta tid att hitta specifik data. Detta kan orsaka (leda till) förvirring i användarens sinne. Dela därför upp dessa poster över flera sidor enligt användarens krav.

Så, vad kan vi göra för att distribuera detta stora antal poster i antal sidor? Metoden att distribuera en enda lista på flera sidor kallas Paginering . Personsökning hänvisar till att visa ditt sökresultat på flera sidor istället för en enda sida.

Vad är paginering?

Paginering är ett sätt att visa data på flera sidor istället för att lägga dem på en enda sida. Paginering hjälper till att dela upp posterna på flera sidor, vilket gör informationen mer läsbar och begriplig.

Paginering är en vanlig uppgift för PHP-utvecklare. MySQL hjälper utvecklaren att skapa paginering genom att använda BEGRÄNSA klausul, som tar två argument. Det första argumentet som OFFSET och det andra argumentet är antal poster som kommer tillbaka från databasen.

Låt oss titta på några fördelar och nackdelar med att använda pagineringskoncept i PHP -

Fördelar med paginering

  • Paginering är mycket användbart i storskaliga projekt eftersom det gör webbarbetet mer professionellt. Inte bara mer professionellt, utan det gör också att webbsidan fungerar mycket snabbare, exakt och effektivt.
  • Med hjälp av paginering kan vi spara laddningstiden för en sida genom att dela upp data på olika sidor. Det sparar oss från att ladda mycket information på en gång.
    Till exempel - En webbsida med 1000 bilder kommer att ta längre tid att ladda bilder än de 50 bilderna på varje webbsida.
    Det betyder att tusentals bilder behöver tusentals HTTP-förfrågningar, vilket skulle göra att sidan inte svarar. Detta problem löses genom att begränsa mängden data med hjälp av paginering med hjälp av LIMIT-satsen.
  • Användningen av paginering förbättrar användarupplevelsen, annonsintäkterna och minskar sidans laddningstid.

Nackdelar med paginering

Även om det finns några kraftfulla fördelar med paginering, men fortfarande undviker många utvecklare att använda den. Tillsammans med några kraftfulla fördelar finns det få nackdelar med paginering också, som är följande:

  • Paginering i sig är en stor overhead i PHP, vilket är en av nackdelarna med paginering. Det är fullständigt en overhead eftersom det är en extern funktion som kan implementeras till kostnaden för extern Markup, Styling och logik. En liten datamängd ignoreras ofta för att använda paginering.
  • Paginering kan orsaka låg sidrankning på sökmotorn eftersom när en sida är borta från startsidan och kräver flera klick får den vanligtvis inte en hög sidrankning.
  • Det begränsar också antalet länkar, sociala delningar, det totala antalet resultat för att synas på webbsidan och ankartext som en sida får när informationen är uppdelad på flera sidor.
Du kan undvika att använda sidnumreringsteknik genom att ändra strukturen i din navigeringsinställning.

Implementering av paginering med PHP och MySQL

För att implementera pagineringen kräver vi en stor datamängd för att tillämpa paginering på den. Därför måste vi först skapa en databas och tabell. Därefter tillhandahåller du posterna i tabellen och börjar koda för att skapa sidnumrering. Så att data som hämtas från databasen kan delas upp på flera sidor.

Här kommer vi att presentera två exempel på paginering. Det första exemplet är ett enkelt och grundläggande exempel på att skapa paginering utan CSS, medan i det andra exemplet kommer vi att skapa paginering på ett attraktivt sätt med hjälp av CSS och bootstrap. Du kan se resultatet för båda. Nedan följer stegen för att skapa paginering;

Enkla steg för att skapa paginering -

  1. Skapa en databas och tabell. Ange en lista över poster i tabellen.
  2. Anslut till MySQL-databasen.
  3. Skapa sideringslänken för att dela upp data på flera sidor och lägg till dem längst ned i tabellen.
  4. Hämta data från databasen och visa den på flera sidor.

Följ stegen nedan en efter en och skapa enkel sidnumrering.

linux genvägar

Exempel 1

Koden nedan är ett enkelt exempel på paginering, som görs i PHP med hjälp av MySQL-databasen. Den delar upp data som hämtas från databasen på flera sidor. I det här exemplet kommer vi att skapa pagineringen för alfabet som ska visas på flera sidor.

Skapande av databas

Skapa först en databas med namnet av paginering som vi skapade och en tabell inuti den heter alfabet . Skapa attribut efter namn id och alfabet , och ange uppgifterna i tabellen.

PHP paginering

Databasanslutning

Att ansluta PHP-filen till databasen är en obligatorisk uppgift. Så att du kan visa data som lagras i databasen på webbsidan. Anslut därför databasen i din PHP-fil för att visa data på webbsidan.

Du kan skriva databasanslutningskod i samma fil och även hålla den separat i en annan fil och inkludera den i din nödvändiga PHP-fil. Kod för databasanslutning-

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

I den här handledningen använder vi mysqli förlängning. Så alla frågor är skrivna enligt mysqli-format.

Få det aktuella sidnumret

Koden nedan bestämmer sidnumret som användaren för närvarande besöker. Om det inte finns är det som standard inställt på sidnummer 1.

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

Formel för paginering

För paginering måste du ställa in gränsen för antalet poster som ska visas per sida. Här sätter vi gränsen för resultat per sida till 10, så det kommer att visas på varje sida enligt nedan -

Sida 1 - A till J (1-10)

Sida 2 - K till T (11-20)

Sida 3 - U till Ö (21-26)

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

Få totalt antal sidor

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

Hämta data och visa på webbsidan

Nedanstående kod används för att hämta data från databasen och visa på webbsidorna som är uppdelade därefter.

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

Visa länken till sidorna i URL

Om du använder denna kod kommer webbsidans webbadress att ändras för varje sida.

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

Slutlig kod

Lägg nu alla koder tillsammans i en enda fil för att göra sidnumrering.

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

Produktion:

Se utgången nedan för ovanstående pagineringsexempel -

PHP paginering

Exempel 2

Exemplet nedan är ett annat exempel på paginering där vi använde CSS tillsammans med HTML för att göra webbsidan mer attraktiv. CSS gör webbsidan mer kreativ och attraktiv. Å andra sidan lagrar MySQL data i databasen. Så du kan lära dig paginering mycket bättre.

Vi har skrivit hel kod i en enda fil förutom databasanslutning. Därför kommer vi att skapa två filer, dvs connection.php och index1.php. Spara båda filerna i .php förlängning. I exemplet nedan kommer du att lära dig att skapa paginering mer kreativt och attraktivt.

    php:Skapad för databasanslutningphp:Skapad för paginering

Fil: connection.php

 

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

Hämta data och visa på webbsidan

När vi har skapat en datauppsättning måste vi nu hämta och visa den på olika webbsidor. Nedanstående kod används för att hämta data från databasen och visa på webbsidorna som är uppdelade därefter.

Hämta data

Efter att ha upprättat databasanslutningen i filen 'connection.php' behöver vi bara importera den till vår kod med nyckelordet require_once. Vi kommer uttryckligen att definiera antalet poster per sida som ska visas.

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

Visa data

Det här avsnittet är väldigt enkelt. I det här avsnittet itererar vi loopen över posterna som vi hämtade och visar varje post lagrad i kolumner i tabellen.

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

Skapande av pagineringslänkar

Nu är den viktigaste koden skapande av pagineringslänkar. Så vi kommer att skapa Föregående, Nästa och numeriska länkar för paginering och lägga till dem längst ner i tabellen.

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