A PHP-t többnyire adatbázisból származó adatok tárolására és megjelenítésére használják. A lapozás történhet ajax-szal, de itt ez nem ajax-szal történik. Ebben az oktatóanyagban megtanuljuk a lapozás PHP-ben MySQL-lel . Vegyünk egy rövid áttekintést az oldalszámozásról egy példával -
Lehetséges, hogy egy SQL SELECT lekérdezés több millió rekordot ad vissza. Nem jó ötlet az összes rekordot egyetlen oldalon megjeleníteni. Egy oldalon található rekordok nagy listája sok időt vesz igénybe az oldal betöltéséhez, és időt vesz igénybe bizonyos adatok megtalálása is. Ez zavart okozhat (hoz vezet) a felhasználó elméjében. Ezért ossza fel ezeket a rekordokat több oldalra a felhasználói igényeknek megfelelően.
Tehát mit tehetünk annak érdekében, hogy ezt a nagy számú rekordot oldalszámban ossza el? Az egyetlen lista több oldalra történő felosztásának módszere az úgynevezett Lapszámozás . A lapozás azt jelenti, hogy a lekérdezés eredménye több oldalon jelenik meg egyetlen oldal helyett.
Mi az a lapozás?
A lapozás az adatok több oldalon való megjelenítésének módja, ahelyett, hogy egyetlen oldalra helyezné el őket. A lapozás segíti a rekordok több oldalra osztását, így az adatok olvashatóbbá és érthetőbbé válnak.
A lapozás gyakori feladat a PHP-fejlesztők számára. A MySQL segítségével a fejlesztő oldalszámozást hozhat létre HATÁR záradék, amelyhez két érv szükséges. Az első érv mint OFFSET a második érv pedig az rekordok száma amely vissza fog térni az adatbázisból.
Nézzünk meg néhány előnyt és hátrányt a lapozási koncepció PHP-ben való használatának
Az oldalszámozás előnyei
- A lapozás nagyon hasznos nagyszabású projekteknél, mert professzionálisabbá teszi a webmunkát. Nemcsak professzionálisabb, hanem sokkal gyorsabbá, precízebbé és hatékonyabbá is teszi a weboldal működését.
- Az oldalszámozás segítségével az adatok különböző oldalakra történő felosztásával megspórolhatjuk egy oldal betöltési idejét. Megkímél minket attól, hogy egyszerre sok információt töltsünk be.
Például - Egy 1000 képet tartalmazó weboldal képeinek betöltése több időt vesz igénybe, mint az egyes weboldalakon lévő 50 kép.
Ez azt jelenti, hogy több ezer képhez több ezer HTTP-kérés szükséges, ami miatt az oldal nem válaszol. Ezt a problémát az adatmennyiség korlátozása oldja meg a LIMIT záradékkal történő lapozás segítségével. - Az oldalszámozás használata javítja a felhasználói élményt, a reklámbevételeket, csökkenti az oldal betöltési idejét.
Az oldalszámozás hátrányai
Bár van néhány jelentős előnye az oldalszámozásnak, sok fejlesztő mégis kerüli a használatát. Néhány jelentős előny mellett az oldalszámozásnak van néhány hátránya is, amelyek a következők:
felhasználónév
- Maga a lapozás is nagy ráfordítást jelent a PHP-ben, ami a lapozás egyik hátránya. Ez teljesen többletköltség, mivel ez egy külső funkció, amelyet külső jelölés, stílus és logika árán lehet megvalósítani. Egy kis adatkészletet gyakran figyelmen kívül hagynak az oldalszámozás használatához.
- A lapozás alacsony oldalrangsort okozhat a keresőmotoron, mert ha egy oldal távol van a kezdőlaptól, és több kattintást igényel, általában nem kap magas rangot.
- Ezenkívül korlátozza a linkek számát, a közösségi megosztásokat, a weboldalon látható eredmények teljes számát és a horgonyszöveget, amelyet az oldal kap, ha az információ több oldalra van felosztva.
A navigációs beállítások struktúrájának módosításával elkerülheti a lapozási technika használatát.
Lapozás megvalósítása PHP és MySQL segítségével
Az oldalszámozás megvalósításához nagy adatkészletre van szükségünk ahhoz, hogy oldalszámozást alkalmazzunk. Ezért először létre kell hoznunk egy adatbázist és táblát. Ezt követően adja meg a rekordokat a táblázatban, és kezdje el a kódolást a lapozás létrehozásához. Így az adatbázisból lekért adatok több oldalra oszthatók.
Itt két példát mutatunk be az oldalszámozásra. Az első példa egy egyszerű és alapvető példa a lapozás létrehozására CSS nélkül, míg a második példában vonzó módon hozunk létre oldalszámozást CSS és bootstrap használatával. Mindkettő kimenetét láthatja. Az alábbiakban bemutatjuk az oldalszámozás létrehozásának lépéseit;
Oldalszámozás létrehozásának egyszerű lépései -
- Hozzon létre egy adatbázist és táblát. Adja meg a rekordok listáját a táblázatban.
- Csatlakozzon a MySQL adatbázishoz.
- Hozzon létre egy oldalszámozási hivatkozást, hogy az adatokat több oldalra ossza fel, és adja hozzá őket a táblázat aljához.
- Töltse le az adatokat az adatbázisból, és jelenítse meg a több oldalon.
Kövesse az alábbi lépéseket egyesével, és hozzon létre egyszerű oldalszámozást.
string substring java
1. példa
Az alábbi kód egy egyszerű példa a lapozásra, amely PHP-ben MySQL adatbázis segítségével történik. Az adatbázisból lekért adatokat több oldalra bontja. Ebben a példában az ábécék oldalszámozását hozzuk létre, hogy több oldalon jelenjenek meg.
Adatbázis létrehozása
Mindenekelőtt hozzon létre egy adatbázist, melynek neve lapszámozás ahogy létrehoztuk, és a benne található táblázat neve ábécé . Attribútum létrehozása név alapján id és ábécé , és adja meg a táblázatban szereplő adatokat.
Adatbázis-kapcsolat
Kötelező feladat a PHP fájl összekapcsolása az adatbázissal. Hogy az adatbázisban tárolt adatokat meg tudja jeleníteni a weboldalon. Ezért csatlakoztassa az adatbázist a PHP fájlban az adatok megjelenítéséhez a weboldalon.
Írhat adatbázis-csatlakozási kódot ugyanabba a fájlba, valamint külön tarthatja egy másik fájlba, és belefoglalhatja a szükséges PHP-fájlba. Adatbázis-kapcsolat kódja-
$conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); }
Ebben az oktatóanyagban azt használjuk mysqli kiterjesztés. Tehát minden lekérdezés mysqli formátum szerint van megírva.
Szerezze meg az aktuális oldalszámot
Az alábbi kód határozza meg, hogy a felhasználó melyik oldalszámot keresi fel. Abban az esetben, ha nincs jelen, alapértelmezés szerint az oldalszám 1-re van állítva.
if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; }
Képlet az oldalszámozáshoz
A lapozáshoz be kell állítani az oldalanként megjelenítendő rekordok számának korlátját. Itt az oldalankénti találatok korlátját 10-re állítottuk, így minden oldalon az alábbiak szerint fog megjelenni -
1. oldal – A-tól J-ig (1-10)
hogyan konvertálhat stringet integer java-ba
2. oldal – K-től T-ig (11-20)
3. oldal – U-tól Z-ig (21-26)
$results_per_page = 10; $page_first_result = ($page-1) * $results_per_page;
A teljes oldalszám lekérése
$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);
Adatok lekérése és megjelenítése a weboldalon
Az alábbi kód az adatok adatbázisból való lekérésére és a megfelelő felosztású weboldalakon való megjelenítésére szolgál.
$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>'; }
Jelenítse meg az oldalak hivatkozását az URL-ben
Ennek a kódnak a használata a weboldal URL-címe minden oldalon megváltozik.
for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; </=>
Végső kód
Most helyezze össze az összes kódot egyetlen fájlban a lapozáshoz.
Fájl: 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>'; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; } ?> </=>
Kimenet:
Lásd az alábbi kimenetet a fenti oldalszámozási példához -
2. példa
Az alábbi példa egy másik példa az oldalszámozásra, amelyben a CSS-t és a HTML-t használtuk, hogy vonzóbbá tegyük a weboldal megjelenítését. A CSS kreatívabbá és vonzóbbá teszi a weboldalt. Másrészt a MySQL adatbázisban tárolja az adatokat. Így sokkal jobban megtanulhatja az oldalszámozást.
A teljes kódot egyetlen fájlba írtuk, kivéve az adatbázis-kapcsolatot. Ezért két fájlt fogunk létrehozni, azaz a connection.php-t és az index1.php-t. Mentse el mindkét fájlt .php kiterjesztés. Az alábbi példában megtanulhatja, hogyan lehet kreatívabbá és vonzóbbá tenni az oldalszámozást.
Fájl: connection.php
Fájl: 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>'; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = ''; if($page>=2){ echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active' href="index1.php?page=" .$i.''>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; 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('page').value; page = ((page>)?:((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('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } </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 'connection.php' 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 '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; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $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>=2) { echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active' href="index1.php?page=" .$i.''>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; 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('page').value; page = ((page>)?:((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;>
Adatok lekérése és megjelenítése a weboldalon
Mivel elkészítettük az adatkészletet, most le kell kérnünk és megjelenítenünk különböző weboldalakon. Az alábbi kód az adatok adatbázisból való lekérésére és a megfelelő felosztású weboldalakon való megjelenítésére szolgál.
globális var a js-ben
Adatok lekérése
Miután létrehoztuk az adatbázis-kapcsolatot a 'connection.php' fájlban, csak importálni kell azt a kódunkba a request_once kulcsszó használatával. Kifejezetten meghatározzuk az oldalanként megjelenítendő rekordok számát.
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; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query);
Adatok megjelenítése
Ez a rész nagyon egyszerű. Ebben a részben megismételjük a ciklust a lekért rekordokon, és megjelenítjük a táblázat oszlopaiban tárolt rekordokat.
<tr> <td></td> <td></td> <td></td> <td></td> </tr>
Lapozási hivatkozás létrehozása
Most a legfontosabb kód a lapozási hivatkozás létrehozása. Tehát létrehozzuk az Előző, Következő és numerikus hivatkozásokat a lapozáshoz, és hozzáadjuk őket a táblázat aljához.
if($page>=2) { echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active\' href="index1.php?page=" .$i.\'\'>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; 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('page').value; page = ((page>)?:((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;>
1)?1:page));>$total_pages){>=$total_pages;>1)?1:page));>$total_pages){>=$total_pages;>