logo

ПХП пагинација

ПХП се углавном користи за складиштење и приказ података из базе података. Пагинација се може урадити са ајак-ом, али овде се ово ради са не-ајак-ом. У овом водичу ћемо научити пагинација у ПХП-у са МиСКЛ-ом . Хајде да направимо кратак преглед о пагинацији са примером -

Могуће је да СКЛ СЕЛЕЦТ упит може вратити милионе записа. Није добра идеја приказивати све записе на једној страници. Великој листи записа на једној страници може бити потребно толико времена да се учита страница, а такође ће потрајати и време за проналажење одређених података. Ово може изазвати (довести до) конфузије у уму корисника. Стога, поделите ове записе на неколико страница у складу са захтевима корисника.

Дакле, шта можемо учинити да дистрибуирамо овај велики број записа на број страница? Метода дистрибуције једне листе на више страница је позната као Пагинација . Страничење се односи на приказивање резултата вашег упита на више страница уместо на једној страници.

претворити ин у стринг ц++

Шта је пагинација?

Пагинација је начин приказивања података на више страница уместо њиховог стављања на једну страницу. Пагинација помаже да се записи поделе на неколико страница, што чини податке читљивијим и разумљивијим.

Пагинација је уобичајен задатак за ПХП програмере. МиСКЛ помаже програмеру да креира пагинацију користећи ЛИМИТ клаузулу, која узима два аргумента. Први аргумент као ОФСЕТ а други аргумент је број записа који ће се вратити из базе података.

Хајде да погледамо неке предности и недостатке коришћења концепта пагинације у ПХП-у -

Предности пагинације

  • Пагинација је веома корисна у великим пројектима јер чини рад на мрежи професионалнијим. Не само да је професионалнија, већ и чини да веб страница ради много брже, прецизније и ефикасније.
  • Уз помоћ пагинације можемо уштедети време учитавања странице тако што ћемо податке поделити на различите странице. То нас штеди од учитавања много информација одједном.
    На пример - Веб страници са 1000 слика биће потребно више времена за учитавање слика од 50 слика на свакој веб страници.
    То значи да хиљадама слика треба хиљаде ХТТП захтева, због чега страница не реагује. Овај проблем је решен ограничавањем количине података уз помоћ пагинације помоћу клаузуле ЛИМИТ.
  • Употреба пагинације побољшава корисничко искуство, приход од оглашавања и смањује време учитавања странице.

Недостаци пагинације

Иако постоје неке моћне предности пагинације, ипак многи програмери избегавају да је користе. Уз неке моћне предности, постоји и неколико недостатака пагинације, а то су:

  • Сама пагинација представља велики трошак у ПХП-у, што је један од недостатака пагинације. То је у потпуности додатни трошак јер је екстерна функција која се може имплементирати по цену додатних маркупа, стилова и логике. Мали скуп података се често игнорише да би користио пагинацију.
  • Пагинација може довести до ниског ранга странице на претраживачу јер када је страница удаљена од почетне странице и захтева неколико кликова, обично не добија висок ранг странице.
  • Такође ограничава број линкова, друштвених дељења, укупан број резултата који су видљиви на веб страници и сидрени текст који страница прима када су информације подељене на неколико страница.
Можете избећи употребу технике пагинације тако што ћете променити структуру подешавања навигације.

Имплементација пагинације са ПХП-ом и МиСКЛ-ом

Да бисмо применили пагинацију, потребан нам је велики скуп података да бисмо применили пагинацију на њега. Стога, прво треба да креирамо базу података и табелу. Након тога унесите записе у табелу и почните да кодирате да бисте креирали пагинацију. Тако да се подаци преузети из базе података могу поделити на неколико страница.

Овде ћемо представити два примера пагинације. Први пример је једноставан и основни пример креирања пагинације без ЦСС-а, док ћемо у другом примеру креирати пагинацију на атрактиван начин користећи ЦСС и боотстрап. Можете видети излаз за оба. У наставку су дати кораци за креирање пагинације;

Једноставни кораци за прављење пагинације -

  1. Направите базу података и табелу. Унесите листу записа у табелу.
  2. Повежите се са МиСКЛ базом података.
  3. Направите везу за пагинацију да бисте поделили податке на више страница и додали их на дно табеле.
  4. Преузмите податке из базе података и прикажите их на више страница.

Пратите кораке у наставку један по један и креирајте једноставну пагинацију.

Пример 1

Код у наставку је једноставан пример пагинације, која се ради у ПХП-у уз помоћ МиСКЛ базе података. Он дели податке преузете из базе података на неколико страница. У овом примеру ћемо креирати пагинацију за абецеде која ће бити приказана на неколико страница.

Креирање базе података

Пре свега, креирајте базу података по имену пагинација као што смо креирали и табела у њој именована алфабет . Креирајте атрибут по имену ид и алфабет , и наведите податке у табели.

ПХП пагинација

Повезивање базе података

Повезивање ПХП датотеке са базом података је обавезан задатак. Тако да можете приказати податке ускладиштене у бази података на веб страници. Због тога повежите базу података у вашој ПХП датотеци за приказ података на веб страници.

Можете написати код за повезивање базе података у истој датотеци, као и да га чувате одвојено у другој датотеци и укључите га у потребну ПХП датотеку. Код за повезивање са базом података-

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

У овом туторијалу користимо мискли проширење. Дакле, сви упити су написани у мискли формату.

Добијте тренутни број странице

Код у наставку одређује број странице коју корисник тренутно посећује. У случају да није присутан, подразумевано је подешен број странице на 1.

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

Формула за пагинацију

За пагинацију, потребно је да подесите ограничење броја записа који ће се приказати по страници. Овде смо поставили ограничење за резултат по страници на 10, тако да ће се приказивати на свакој страници као што је дато у наставку -

Страница 1 - А до Ј (1-10)

Страна 2 - од К до Т (11-20)

јвм

Страница 3 - У до З (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 = &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;; } 

Прикажите везу страница у УРЛ-у

Коришћењем овог кода УРЛ веб странице ће се променити за сваку страницу.

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

Финал Цоде

Сада саставите све кодове у једну датотеку да бисте извршили пагинацију.

укључују ц програмирање

Фајл: Индек2.пхп

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

Излаз:

Погледајте доњи излаз за горњи пример пагинације -

ПХП пагинација

Пример 2

Пример у наставку је још један пример пагинације у којој смо користили ЦСС заједно са ХТМЛ-ом да бисмо приказ веб странице учинили привлачнијим. ЦСС чини веб страницу креативнијом и привлачнијом. С друге стране, МиСКЛ чува податке у бази података. Дакле, можете много боље научити пагинацију.

Написали смо цео код у једној датотеци осим повезивања базе података. Стога ћемо креирати две датотеке, тј. цоннецтион.пхп и индек1.пхп. Сачувајте обе датотеке у .пхп проширење. У примеру у наставку научићете да креирате креативније и атрактивније пагинације.

    пхп:Креиран за повезивање базе податакапхп:Креиран за пагинацију

Фајл: цоннецтион.пхп

 

Фајл: индек1.пхп

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

Преузимање података и приказ на веб страници

Пошто смо креирали скуп података, сада морамо да га преузмемо и прикажемо на различитим веб страницама. Доњи код се користи за преузимање података из базе података и приказивање на веб страницама које су према томе подељене.

Преузми податке

Након успостављања везе са базом података у датотеци 'цоннецтион.пхп', само треба да је увеземо у наш код користећи кључну реч рекуире_онце. Експлицитно ћемо дефинисати број записа по страници за приказ.

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

Приказ података

Овај одељак је веома једноставан. У овом одељку понављамо петљу преко записа које смо преузели и приказујемо сваки запис ускладиштен у колонама табеле.

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

Пагинатион Линк Креирање

Сада је најважнији код креирање везе за пагинацију. Дакле, креираћемо претходну, следећу и нумеричку везу за пагинацију и додати их на дно табеле.

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