PHP се използва най-вече за съхраняване и показване на данни от база данни. Пагинирането може да се направи с ajax, но тук това се прави с не-ajax. В този урок ще научим пагинация в PHP с MySQL . Нека направим кратък преглед на пагинацията с пример -
Възможно е SQL SELECT заявка да върне милиони записи обратно. Не е добра идея да показвате всички записи на една страница. Голям списък от записи на една страница може да отнеме много време за зареждане на страницата и също така да отнеме време за намиране на конкретни данни. Това може да причини (води до) объркване в съзнанието на потребителя. Следователно, разделете тези записи на няколко страници според изискванията на потребителя.
цяло число сравнение с java
И така, какво можем да направим, за да разпределим този голям брой записи в брой страници? Методът за разпространение на единичен списък в множество страници е известен като Пагинация . Пейджинг се отнася до показване на резултата от вашата заявка на множество страници вместо на една страница.
Какво е страниране?
Пагинирането е начин за показване на данните на множество страници, вместо да ги поставите на една страница. Пагинирането помага да се разделят записите на няколко страници, което прави данните по-четими и разбираеми.
Страницирането е обичайна задача за PHP разработчиците. MySQL помага на програмиста да създаде пагинация чрез използване на ОГРАНИЧЕНИЕ клауза, която приема два аргумента. Първият аргумент като ИЗМЕСТВАНЕ и вторият аргумент е брой записи който ще се върне от базата данни.
Нека да разгледаме някои предимства и недостатъци на използването на концепцията за пагинация в PHP -
Предимства на пагинацията
- Пагинацията е много полезна в големи проекти, защото прави уеб работата по-професионална. Не само по-професионален, но също така прави уеб страницата да работи много по-бързо, прецизно и ефективно.
- С помощта на пагинацията можем да спестим времето за зареждане на страница, като разделим данните на различни страници. Спестява ни да зареждаме много информация наведнъж.
Например - Уеб страница с 1000 изображения ще отнеме повече време за зареждане на изображения, отколкото 50 изображения на всяка уеб страница.
Това означава, че хиляди изображения се нуждаят от хиляди HTTP заявки, което би накарало страницата да не реагира. Този проблем се разрешава чрез ограничаване на количеството данни с помощта на пагинация с помощта на клауза LIMIT. - Използването на пагинация подобрява потребителското изживяване, приходите от реклама и намалява времето за зареждане на страницата.
Недостатъци на пагинацията
Въпреки че има някои мощни предимства на пагинацията, но все още много разработчици избягват да я използват. Наред с някои мощни предимства, има и няколко недостатъка на пагинацията, които са както следва:
- Самото страниране е голямо натоварване в PHP, което е един от недостатъците на странирането. Това е напълно режийно, тъй като е външна функция, която може да бъде внедрена за сметка на външни маркировки, стилове и логика. Малък набор от данни, който често се игнорира, за да се използва пагинация.
- Страницирането може да причини нисък ранг на страницата в търсачката, защото когато дадена страница е далеч от началната страница и изисква няколко кликвания, тя обикновено не получава висок ранг на страницата.
- Той също така ограничава броя на връзките, социалните споделяния, общия брой резултати до видими на уеб страницата и котвения текст, който страницата получава, когато информацията е разделена на няколко страници.
Можете да избегнете използването на техника за пагиниране, като промените структурата на вашата настройка за навигация.
Внедряване на пагинация с PHP и MySQL
За да приложим пагинацията, ние изискваме голям набор от данни, за да приложим пагинация към него. Следователно, първо трябва да създадем база данни и таблица. След това предоставете записите в таблицата и започнете да кодирате, за да създадете пагинация. Така че данните, извлечени от базата данни, могат да бъдат разделени на няколко страници.
Тук ще представим два примера за пагинация. Първият пример е прост и основен пример за създаване на пагинация без CSS, докато във втория пример ще създадем пагинация по атрактивен начин, използвайки CSS и bootstrap. Можете да видите резултата и за двете. По-долу са дадени стъпките за създаване на пагинация;
Лесни стъпки за създаване на пагинация -
- Създайте база данни и таблица. Предоставете списък със записи в таблицата.
- Свържете се с базата данни MySQL.
- Създайте връзката за страниране, за да разделите данните на няколко страници и да ги добавите в долната част на таблицата.
- Извличане на данни от базата данни и показване на множество страници.
Следвайте стъпките по-долу една по една и създайте проста пагинация.
Пример 1
Кодът по-долу е прост пример за пагинация, която се извършва в PHP с помощта на MySQL база данни. Той разделя данните, извлечени от базата данни, на няколко страници. В този пример ще създадем пагинация за азбуки, които да се показват на няколко страници.
Създаване на база данни
Първо, създайте база данни, наречена от пагинация както създадохме и именувана таблица вътре в нея азбука . Създайте атрибут по име документ за самоличност и азбука и предоставете данните в таблицата.
Свързване с база данни
Свързването на PHP файла към базата данни е задължителна задача. За да можете да показвате данните, съхранени в базата данни, на уеб страницата. Затова свържете базата данни във вашия PHP файл за показване на данни на уеб страница.
Можете да напишете код за свързване на базата данни в същия файл, както и да го съхранявате отделен в друг файл и да го включите към необходимия ви PHP файл. Код за връзка с база данни-
$conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); }
В този урок използваме mysqli разширение. И така, всички заявки са написани в съответствие с mysqli формат.
Вземете номера на текущата страница
Кодът по-долу определя номера на страницата, която потребителят посещава в момента. В случай, че не е налице, по подразбиране номерът на страницата е 1.
if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; }
Формула за пагинация
За пагинация трябва да зададете лимит за брой записи, които да се показват на страница. Тук задаваме ограничението за резултат на страница до 10, така че ще се показва на всяка страница, както е дадено по-долу -
Страница 1 - A до J (1-10)
Страница 2 - K до T (11-20)
Страница 3 - U до Z (21-26)
$results_per_page = 10; $page_first_result = ($page-1) * $results_per_page;
Вземете общ брой страници
$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);
Извличане на данни и показване на уеб страница
Кодът по-долу се използва за извличане на данните от базата данни и показване на уеб страниците, които са съответно разделени.
$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>'; }
Показване на връзката на страниците в URL
С помощта на този код URL адресът на уеб страницата ще се променя за всяка страница.
for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; </=>
Окончателен код
Сега съберете всички кодове в един файл, за да направите пагинация.
Файл: 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 . ' '; } ?> </=>
Изход:
Вижте изхода по-долу за горния пример за пагинация -
Пример 2
Примерът по-долу е друг пример за пагинация, в която използвахме CSS заедно с HTML, за да направим изгледа на уеб страницата по-привлекателен. CSS прави уеб страницата по-креативна и привлекателна. От друга страна, MySQL съхранява данните в база данни. Така че можете да научите пагинацията много по-добре.
java конвертира цяло число в низ
Написахме целия код в един файл, с изключение на свързаността на базата данни. Следователно ще създадем два файла, т.е. connection.php и index1.php. Запазете и двата файла .php разширение. В примера по-долу ще се научите да създавате пагинация по-креативна и привлекателна.
Файл: връзка.php
Файл: 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;>
Извличане на данни и показване на уеб страница
Тъй като създадохме набор от данни, сега трябва да го извлечем и покажем на различни уеб страници. Кодът по-долу се използва за извличане на данните от базата данни и показване на уеб страниците, които са съответно разделени.
Извличане на данни
След като установим връзката с базата данни във файла 'connection.php', ние просто трябва да го импортираме в нашия код, използвайки ключовата дума require_once. Ние изрично ще дефинираме броя на записите на страница за показване.
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);
Показване на данни
Този раздел е много прост. В този раздел повтаряме цикъла върху записите, които сме извлекли, и показваме всеки запис, съхранен в колони на таблицата.
<tr> <td></td> <td></td> <td></td> <td></td> </tr>
Създаване на връзки към страници
Сега най-важният код е създаването на връзка за страници. Така че ще създадем предишни, следващи и цифрови връзки за пагинация и ще ги добавим в долната част на таблицата.
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;>