logo

PHP stránkování

PHP se většinou používá k ukládání a zobrazování dat z databáze. Stránkování lze provést pomocí ajaxu, ale zde je to provedeno pomocí non-ajaxu. V tomto tutoriálu se naučíme stránkování v PHP s MySQL . Pojďme si udělat krátký přehled stránkování s příkladem –

Je možné, že dotaz SQL SELECT může vrátit miliony záznamů zpět. Není vhodné zobrazovat všechny záznamy na jedné stránce. Velký seznam záznamů na jedné stránce může trvat tak dlouho, než se stránka načte, a také spotřebovat čas k nalezení konkrétních dat. To může způsobit (vede k) zmatek v mysli uživatele. Rozdělte proto tyto záznamy na více stránek podle požadavků uživatele.

Co tedy můžeme udělat pro distribuci tohoto velkého množství záznamů na počet stránek? Metoda distribuce jednoho seznamu na více stránek je známá jako Stránkování . Stránkování znamená zobrazení výsledku dotazu na více stránkách namísto jedné stránky.

Co je stránkování?

Stránkování je způsob, jak zobrazit data na více stránkách namísto jejich umístění na jednu stránku. Stránkování pomáhá rozdělit záznamy na několik stránek, díky čemuž jsou data čitelnější a srozumitelnější.

Stránkování je běžným úkolem pro vývojáře PHP. MySQL pomáhá vývojářům vytvářet stránkování pomocí OMEZIT klauzule, která má dva argumenty. První argument jako OFFSET a druhý argument je počet záznamů který se vrátí z databáze.

Podívejme se na některé výhody a nevýhody používání konceptu stránkování v PHP -

Výhody stránkování

  • Stránkování je velmi užitečné ve velkých projektech, protože dělá webovou práci profesionálnější. Nejen, že je to profesionálnější, ale také to dělá webovou stránku mnohem rychlejší, přesnější a efektivnější.
  • Pomocí stránkování můžeme ušetřit čas načítání stránky rozdělením dat na různé stránky. Ušetří nám to načítání velkého množství informací najednou.
    Například - Webová stránka s 1000 obrázky zabere načtení obrázků déle než 50 obrázků na každé webové stránce.
    To znamená, že tisíce obrázků potřebují tisíce požadavků HTTP, kvůli kterým by stránka přestala reagovat. Tento problém je vyřešen omezením množství dat pomocí stránkování pomocí klauzule LIMIT.
  • Použití stránkování zlepšuje uživatelský dojem, příjmy z reklamy a zkracuje dobu načítání stránky.

Nevýhody stránkování

I když existují některé silné výhody stránkování, přesto se mnoho vývojářů vyhýbá jeho použití. Spolu s některými silnými výhodami existuje také několik nevýhod stránkování, které jsou následující:

  • Samotné stránkování je v PHP velká režie, což je jedna z nevýhod stránkování. Jedná se o zcela režijní náklady, protože jde o externí funkci, kterou lze implementovat za cenu nadbytečných značek, stylů a logiky. Malá datová sada často ignorovaná pro použití stránkování.
  • Stránkování může způsobit nízké hodnocení stránky ve vyhledávači, protože když je stránka mimo domovskou stránku a vyžaduje několik kliknutí, obvykle nezíská vysoké hodnocení stránky.
  • Omezuje také počet odkazů, sdílení na sociálních sítích, celkový počet výsledků, které jsou viditelné na webové stránce, a kotvící text, který stránka obdrží, když jsou informace rozděleny na několik stránek.
Použitím techniky stránkování se můžete vyhnout úpravou struktury nastavení navigace.

Implementace stránkování pomocí PHP a MySQL

Aby bylo možné stránkování implementovat, potřebujeme velký soubor dat, abychom na něj mohli použít stránkování. Nejprve tedy musíme vytvořit databázi a tabulku. Poté poskytněte záznamy v tabulce a začněte kódovat, abyste vytvořili stránkování. Aby bylo možné data získaná z databáze rozdělit na několik stránek.

Zde uvedeme dva příklady stránkování. První příklad je jednoduchý a základní příklad vytváření stránkování bez CSS, zatímco ve druhém příkladu vytvoříme stránkování atraktivním způsobem pomocí CSS a bootstrapu. Můžete vidět výstup pro oba. Níže jsou uvedeny kroky pro vytvoření stránkování;

Jednoduché kroky k vytvoření stránkování -

  1. Vytvořte databázi a tabulku. Zadejte seznam záznamů do tabulky.
  2. Připojte se k databázi MySQL.
  3. Vytvořte stránkovací odkaz pro rozdělení dat na více stránek a přidejte je na konec tabulky.
  4. Získejte data z databáze a zobrazte je na více stránkách.

Postupujte podle níže uvedených kroků jeden po druhém a vytvořte jednoduché stránkování.

Příklad 1

Níže uvedený kód je jednoduchý příklad stránkování, které se provádí v PHP s pomocí databáze MySQL. Rozdělí data získaná z databáze na několik stránek. V tomto příkladu vytvoříme stránkování pro abecedy, které se zobrazí na několika stránkách.

Vytvoření databáze

Nejprve vytvořte databázi pojmenovanou podle stránkování jak jsme vytvořili a pojmenovali tabulku uvnitř abeceda . Vytvořte atribut podle názvu id a abeceda a uveďte údaje v tabulce.

PHP stránkování

Databázová konektivita

Připojení souboru PHP k databázi je povinný úkol. Aby bylo možné zobrazit data uložená v databázi na webové stránce. Pro zobrazení dat na webové stránce proto připojte databázi ve vašem souboru PHP.

Kód pro připojení k databázi můžete zapsat do stejného souboru a také jej ponechat odděleně do jiného souboru a zahrnout jej do požadovaného souboru PHP. Kód pro připojení k databázi -

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

V tomto tutoriálu používáme mysqli rozšíření. Všechny dotazy jsou tedy psány ve formátu mysqli.

Získejte aktuální číslo stránky

Níže uvedený kód určuje číslo stránky, kterou uživatel právě navštěvuje. V případě, že není přítomen, je standardně nastaveno číslo stránky na 1.

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

Vzorec pro stránkování

Pro stránkování je třeba nastavit limit počtu záznamů, které se mají zobrazit na stránce. Zde jsme nastavili limit pro výsledek na stránku na 10, takže se zobrazí na každé stránce, jak je uvedeno níže -

Strana 1 – A až J (1-10)

Strana 2 – K až T (11-20)

Strana 3 – U až Z (21-26)

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

Získejte celkový počet stránek

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

Načtení dat a zobrazení na webové stránce

Níže uvedený kód se používá k načtení dat z databáze a zobrazení na webových stránkách, které jsou podle toho rozděleny.

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

Zobrazit odkaz na stránky v URL

Použití tohoto kódu URL webové stránky se změní pro každou stránku.

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

Závěrečný kód

Nyní dejte všechny kódy dohromady do jednoho souboru a proveďte stránkování.

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

Výstup:

Viz níže uvedený výstup pro výše uvedený příklad stránkování -

PHP stránkování

Příklad 2

Níže uvedený příklad je dalším příkladem stránkování, ve kterém jsme použili CSS spolu s HTML, aby bylo zobrazení webové stránky atraktivnější. CSS dělá webovou stránku kreativnější a atraktivnější. Na druhou stranu MySQL ukládá data do databáze. Takže se můžete mnohem lépe naučit stránkování.

Napsali jsme celý kód do jednoho souboru kromě databázové konektivity. Proto vytvoříme dva soubory, tedy connection.php a index1.php. Uložte oba soubory do .php rozšíření. V níže uvedeném příkladu se naučíte vytvářet kreativnější a atraktivnější stránkování.

    php:Vytvořeno pro připojení k databáziphp:Vytvořeno pro stránkování

Soubor: connection.php

 

Soubor: index1.php

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

Načtení dat a zobrazení na webové stránce

Jak jsme vytvořili datovou sadu, nyní ji potřebujeme načíst a zobrazit na různých webových stránkách. Níže uvedený kód se používá k načtení dat z databáze a zobrazení na webových stránkách, které jsou podle toho rozděleny.

Načíst data

Po navázání databázového spojení v souboru 'connection.php' jej stačí importovat do našeho kódu pomocí klíčového slova require_once. Explicitně definujeme počet záznamů na stránku, které se mají zobrazit.

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

Zobrazit data

Tato sekce je velmi jednoduchá. V této části opakujeme smyčku přes záznamy, které jsme načetli, a zobrazujeme každý záznam uložený ve sloupcích tabulky.

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

Vytvoření odkazu stránkování

Nyní je nejdůležitějším kódem vytvoření odkazu na stránkování. Vytvoříme tedy předchozí, další a číselné odkazy pro stránkování a přidáme je na konec tabulky.

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