logo

PHP-paginering

PHP brukes mest til å lagre og vise data fra en database. Paginering kan gjøres med ajax, men her gjøres dette med ikke-ajax. I denne opplæringen lærer vi paginering i PHP med MySQL . La oss ta en kort gjennomgang om paginering med et eksempel -

Det er mulig at en SQL SELECT-spørring kan returnere millioner av poster tilbake. Det er ikke lurt å vise alle poster på en enkelt side. En stor liste med poster på en enkelt side kan ta så mye tid å laste siden og også bruke tid på å finne spesifikke data. Dette kan forårsake (fører til) forvirring i brukerens sinn. Del derfor disse postene over flere sider i henhold til brukerkravet.

Så, hva kan vi gjøre for å distribuere dette store antallet poster i antall sider? Metoden for å distribuere en enkelt liste til flere sider er kjent som Paginering . Personsøking refererer til å vise søkeresultatet på flere sider i stedet for én enkelt side.

Hva er paginering?

Paginering er en måte å vise dataene på flere sider i stedet for å sette dem på en enkelt side. Paginering bidrar til å dele opp postene på flere sider, noe som gjør dataene mer lesbare og forståelige.

hvordan deaktivere utviklermodus i Android

Paginering er en vanlig oppgave for PHP-utviklere. MySQL hjelper utvikleren med å lage paginering ved å bruke GRENSE klausul, som tar to argumenter. Det første argumentet som OFFSET og det andre argumentet er antall poster som kommer tilbake fra databasen.

La oss se på noen fordeler og ulemper ved å bruke pagineringskonsept i PHP -

Fordeler med paginering

  • Paginering er veldig nyttig i store prosjekter fordi det gjør webarbeidet mer profesjonelt. Ikke bare mer profesjonelt, men det gjør også at nettsiden fungerer mye raskere, presis og effektiv.
  • Ved hjelp av paginering kan vi spare innlastingstiden til en side ved å dele dataene på ulike sider. Det sparer oss fra å laste inn mye informasjon på en gang.
    For eksempel - En nettside med 1000 bilder vil ta lengre tid å laste inn bilder enn de 50 bildene på hver nettside.
    Dette betyr at tusenvis av bilder trenger tusenvis av HTTP-forespørsler, noe som vil gjøre at siden ikke svarer. Dette problemet løses ved å begrense mengden data ved hjelp av paginering ved å bruke LIMIT-klausulen.
  • Bruken av paginering forbedrer brukeropplevelsen, annonseinntektene og reduserer lastetiden på siden.

Ulemper med paginering

Selv om det er noen kraftige fordeler med paginering, men fortsatt unngår mange utviklere å bruke det. Sammen med noen kraftige fordeler, er det få ulemper med paginering også, som er som følger:

  • Paginering i seg selv er en stor overhead i PHP, som er en av ulempene med paginering. Det er fullstendig overhead siden det er en ekstern funksjon som kan implementeres til kostnadene for fremmed markup, styling og logikk. Et lite datasett ignoreres ofte for å bruke paginering.
  • Paginering kan forårsake lav siderangering på søkemotoren fordi når en side er borte fra hjemmesiden og krever flere klikk, får den vanligvis ikke høy siderangering.
  • Det begrenser også antall lenker, sosiale delinger, totalt antall resultater til å være synlige på nettsiden, og ankertekst som en side mottar når informasjonen er delt over flere sider.
Du kan unngå bruk av pagineringsteknikk ved å endre strukturen i navigasjonsoppsettet.

Implementering av paginering med PHP og MySQL

For å implementere pagineringen krever vi et stort datasett for å bruke paginering på det. Derfor må vi først lage en database og tabell. Etter det, oppgi postene i tabellen og start kodingen for å lage paginering. Slik at dataene som hentes fra databasen kan deles over flere sider.

Her vil vi introdusere to eksempler på paginering. Første eksempel er et enkelt og grunnleggende eksempel på paginering uten CSS, mens i andre eksempel vil vi lage paginering på en attraktiv måte ved å bruke CSS og bootstrap. Du kan se utgangen for begge. Nedenfor er trinnene gitt for opprettelse av paginering;

Enkle trinn for å lage paginering -

  1. Lag en database og tabell. Angi en liste over poster i tabellen.
  2. Koble til MySQL-databasen.
  3. Lag pagineringskoblingen for å dele dataene på flere sider og legge dem til nederst i tabellen.
  4. Hent data fra databasen og vis dem på flere sider.

Følg trinnene nedenfor en etter en og lag enkel paginering.

Eksempel 1

Koden nedenfor er et enkelt eksempel på paginering, som gjøres i PHP ved hjelp av MySQL-databasen. Den deler dataene hentet fra databasen på flere sider. I dette eksemplet vil vi lage paginering for alfabeter som skal vises på flere sider.

Database opprettelse

Først av alt, opprett en database kalt av paginering som vi laget og en tabell inni den heter alfabet . Opprett attributt etter navn id og alfabet , og oppgi dataene i tabellen.

PHP-paginering

Database tilkobling

Å koble PHP-filen til databasen er en nødvendig oppgave. Slik at du kan vise dataene som er lagret i databasen til nettsiden. Koble derfor databasen i PHP-filen din for å vise data på nettsiden.

Du kan skrive databasetilkoblingskode i samme fil, samt holde den separat i en annen fil og inkludere den i den nødvendige PHP-filen. Kode for databasetilkobling-

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

I denne opplæringen bruker vi mysqli Utvidelse. Så alle spørringene er skrevet i henhold til mysqli-format.

Få gjeldende sidenummer

Koden nedenfor bestemmer sidenummeret brukeren besøker for øyeblikket. Hvis det ikke er til stede, er det som standard satt sidenummer til 1.

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

Formel for paginering

For paginering må du angi grensen for antall poster som skal vises per side. Her setter vi grensen for resultat per side til 10, så den vil vises på hver side som gitt nedenfor -

Side 1 - A til J (1-10)

Side 2 - K til T (11-20)

Side 3 – U til Å (21–26)

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

Få totalt antall sider

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

Hent data og vis på nettsiden

Koden nedenfor brukes til å hente dataene fra databasen og vise på nettsidene som er delt inn tilsvarende.

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

Vis lenken til sidene i URL

Ved å bruke denne koden vil URL-en til nettsiden endres for hver side.

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

Endelig kode

Sett nå alle kodene sammen i en enkelt fil for å fullføre paginering.

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

Produksjon:

Se utgangen nedenfor for eksempel på paginering ovenfor -

PHP-paginering

Eksempel 2

Eksemplet nedenfor er et annet eksempel på paginering der vi brukte CSS sammen med HTML for å gjøre nettsidevisningen mer attraktiv. CSS gjør nettsiden mer kreativ og attraktiv. På den annen side lagrer MySQL dataene i databasen. Så du kan lære paginering mye bedre.

Vi har skrevet hele koden i en enkelt fil bortsett fra databasetilkobling. Derfor vil vi lage to filer, dvs. forbindelse.php og index1.php. Lagre begge filene i .php Utvidelse. I eksemplet nedenfor vil du lære å lage paginering mer kreativ og attraktiv.

operativsystem
    php:Laget for databasetilkoblingphp:Laget for 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;>

Hent data og vis på nettsiden

Ettersom vi har laget datasett, må vi nå hente og vise det på forskjellige nettsider. Koden nedenfor brukes til å hente data fra databasen og vise på nettsidene som er delt inn tilsvarende.

Hent data

Etter å ha etablert databasetilkoblingen i 'connection.php'-filen, trenger vi bare å importere den til koden vår ved å bruke nøkkelordet require_once. Vi vil eksplisitt definere antall poster per side som skal vises.

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

Vis data

Denne delen er veldig enkel. I denne delen itererer vi løkken over postene vi hentet og viser hver post som er lagret i kolonner i tabellen.

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

Oppretting av pagineringslenker

Nå er den viktigste koden opprettelse av pagineringslenker. Så vi vil lage de forrige, neste og numeriske koblingene for paginering og legge dem til nederst 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;>