logo

Paginacja PHP

PHP jest najczęściej używany do przechowywania i wyświetlania danych z bazy danych. Paginację można wykonać za pomocą ajaxu, ale tutaj jest to wykonywane bez ajaxu. W tym samouczku nauczymy się paginacja w PHP z MySQL . Przyjrzyjmy się krótkiemu przeglądowi paginacji na przykładzie -

Możliwe jest, że zapytanie SQL SELECT zwróci miliony rekordów. Wyświetlanie wszystkich rekordów na jednej stronie nie jest dobrym pomysłem. Duża lista rekordów na jednej stronie może zająć dużo czasu, aby załadować stronę, a także zająć czas na znalezienie określonych danych. Może to powodować (prowadzić do) zamieszanie w umyśle użytkownika. Dlatego podziel te rekordy na kilka stron, zgodnie z wymaganiami użytkownika.

Co zatem możemy zrobić, aby rozmieścić tak dużą liczbę rekordów na stronach? Metoda dystrybucji pojedynczej listy na wiele stron jest nazywana Paginacja . Stronicowanie oznacza pokazywanie wyniku zapytania na wielu stronach zamiast na jednej stronie.

Co to jest paginacja?

Paginacja to sposób wyświetlania danych na wielu stronach zamiast umieszczania ich na jednej stronie. Paginacja pozwala na podzielenie rekordów na kilka stron, dzięki czemu dane są bardziej czytelne i zrozumiałe.

Paginacja jest częstym zadaniem programistów PHP. MySQL pomaga programiście tworzyć paginację za pomocą LIMIT klauzula, która przyjmuje dwa argumenty. Pierwszy argument jako ZRÓWNOWAŻYĆ a drugi argument to liczba rekordów który zwróci z bazy danych.

Przyjrzyjmy się niektórym zaletom i wadom stosowania koncepcji paginacji w PHP -

lista

Zalety paginacji

  • Paginacja jest bardzo przydatna w projektach na dużą skalę, ponieważ sprawia, że ​​​​praca internetowa jest bardziej profesjonalna. Nie tylko bardziej profesjonalnie, ale także sprawia, że ​​strona działa dużo szybciej, precyzyjnie i efektywnie.
  • Za pomocą paginacji możemy zaoszczędzić czas ładowania strony, dzieląc dane na różne strony. Oszczędza nam to konieczności ładowania wielu informacji na raz.
    Na przykład - Strona internetowa zawierająca 1000 obrazów będzie potrzebowała więcej czasu na załadowanie obrazów niż 50 obrazów na każdej stronie.
    Oznacza to, że tysiące obrazów wymagają tysięcy żądań HTTP, co spowodowałoby, że strona przestałaby odpowiadać. Problem ten rozwiązuje się poprzez ograniczenie ilości danych za pomocą paginacji przy użyciu klauzuli LIMIT.
  • Korzystanie z paginacji poprawia wygodę użytkownika, przychody z reklam i skraca czas ładowania strony.

Wady paginacji

Chociaż istnieje kilka potężnych zalet paginacji, wielu programistów nadal unika jej używania. Oprócz kilku potężnych zalet, istnieje również kilka wad paginacji, które są następujące:

  • Paginacja sama w sobie jest dużym obciążeniem w PHP i jest jedną z wad paginacji. Jest to całkowicie narzut, ponieważ jest to funkcja zewnętrzna, którą można zaimplementować kosztem zewnętrznych znaczników, stylizacji i logiki. Mały zbiór danych często ignorowany przy korzystaniu z paginacji.
  • Paginacja może powodować niski ranking strony w wyszukiwarkach, ponieważ gdy strona znajduje się poza stroną główną i wymaga kilku kliknięć, zwykle nie uzyskuje wysokiego rankingu strony.
  • Ogranicza także liczbę linków, udostępnień w mediach społecznościowych, całkowitą liczbę wyników widocznych na stronie internetowej oraz tekst zakotwiczenia otrzymywany przez stronę, gdy informacje są podzielone na kilka stron.
Możesz uniknąć stosowania techniki paginacji, modyfikując strukturę ustawień nawigacji.

Implementacja paginacji w PHP i MySQL

Aby zaimplementować paginację, potrzebujemy dużego zbioru danych, aby zastosować do niej paginację. Dlatego najpierw musimy utworzyć bazę danych i tabelę. Następnie podaj rekordy w tabeli i rozpocznij kodowanie, aby utworzyć paginację. Dzięki temu dane pobrane z bazy danych można rozłożyć na kilka stron.

Tutaj przedstawimy dwa przykłady paginacji. Pierwszy przykład to prosty i podstawowy przykład tworzenia paginacji bez CSS, natomiast w drugim przykładzie stworzymy paginację w atrakcyjny sposób za pomocą CSS i bootstrapu. Możesz zobaczyć dane wyjściowe dla obu. Poniżej znajdują się kroki dotyczące tworzenia paginacji;

Proste kroki do utworzenia paginacji -

  1. Utwórz bazę danych i tabelę. Podaj listę rekordów do tabeli.
  2. Połącz się z bazą danych MySQL.
  3. Utwórz łącze paginacji, aby podzielić dane na wiele stron i dodać je na dole tabeli.
  4. Pobieraj dane z bazy danych i wyświetlaj je na wielu stronach.

Wykonaj poniższe kroki jeden po drugim i utwórz prostą paginację.

Przykład 1

Poniższy kod jest prostym przykładem paginacji, która odbywa się w języku PHP przy pomocy bazy danych MySQL. Dzieli dane pobrane z bazy danych na kilka stron. W tym przykładzie utworzymy paginację, aby alfabety były wyświetlane na kilku stronach.

Tworzenie bazy danych

Przede wszystkim utwórz bazę danych o nazwie paginacja jak stworzyliśmy i tabelę w środku o nazwie alfabet . Utwórz atrybut według nazwy ID I alfabet i podaj dane w tabeli.

Paginacja PHP

Łączność z bazą danych

Podłączenie pliku PHP do bazy danych jest zadaniem wymaganym. Abyś mógł wyświetlić na stronie internetowej dane zapisane w bazie danych. Dlatego podłącz bazę danych w swoim pliku PHP, aby wyświetlać dane na stronie internetowej.

Możesz zapisać kod połączenia z bazą danych w tym samym pliku, a także zachować go oddzielnie w innym pliku i dołączyć do wymaganego pliku PHP. Kod połączenia z bazą danych-

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

W tym samouczku używamy mysqli rozszerzenie. Zatem wszystkie zapytania są zapisywane w formacie mysqli.

Uzyskaj bieżący numer strony

Poniższy kod określa numer strony, którą aktualnie odwiedza użytkownik. W przypadku jego braku domyślnie ustawiany jest numer strony na 1.

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

Formuła paginacji

W przypadku paginacji należy ustawić limit liczby rekordów wyświetlanych na stronie. Tutaj ustawiamy limit wyników na stronę na 10, więc wynik będzie wyświetlany na każdej stronie, jak podano poniżej -

Strona 1 - A do J (1-10)

przełącznik c#

Strona 2 - K do T (11-20)

Strona 3 - U do Z (21-26)

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

Uzyskaj całkowitą liczbę stron

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

Pobierz dane i wyświetl na stronie internetowej

Poniższy kod służy do pobrania danych z bazy danych i wyświetlenia ich na odpowiednio podzielonych stronach.

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

Wyświetl link do stron w adresie URL

Użycie tego kodu adresu URL strony internetowej będzie się zmieniać dla każdej strony.

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

Kod końcowy

Teraz umieść wszystkie kody w jednym pliku, aby wykonać paginację.

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

Wyjście:

Zobacz poniższe dane wyjściowe dla powyższego przykładu paginacji -

Paginacja PHP

Przykład 2

Poniższy przykład to kolejny przykład paginacji, w którym wykorzystaliśmy CSS wraz z HTML, aby uatrakcyjnić wygląd strony. CSS sprawia, że ​​strona internetowa jest bardziej kreatywna i atrakcyjna. Z drugiej strony MySQL przechowuje dane w bazie danych. Możesz więc znacznie lepiej nauczyć się paginacji.

Napisaliśmy cały kod w jednym pliku, z wyjątkiem połączenia z bazą danych. Dlatego utworzymy dwa pliki, tj. połączenie.php i indeks1.php. Zapisz oba pliki w formacie .php rozszerzenie. W poniższym przykładzie nauczysz się tworzyć bardziej kreatywną i atrakcyjną paginację.

    PHP:Stworzony do łączności z bazami danychPHP:Stworzony do paginacji

Plik: połączenie.php

 

Plik: indeks1.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;>

Pobierz dane i wyświetl na stronie internetowej

Skoro już stworzyliśmy zbiór danych, teraz musimy go pobrać i wyświetlić na różnych stronach internetowych. Poniższy kod służy do pobrania danych z bazy danych i wyświetlenia ich na odpowiednio podzielonych stronach.

Pobierz dane

Po nawiązaniu połączenia z bazą danych w pliku 'connection.php' wystarczy zaimportować go do naszego kodu za pomocą słowa kluczowego require_once. Jasno określimy liczbę rekordów wyświetlanych na stronie.

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

Wyświetl dane

Ta sekcja jest bardzo prosta. W tej sekcji wykonamy iterację pętli po pobranych rekordach i wyświetlimy każdy rekord zapisany w kolumnach tabeli.

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

Tworzenie linków do stronicowania

Teraz najważniejszym kodem jest tworzenie linków do stronicowania. Dlatego utworzymy linki Poprzedni, Następny i numeryczny do paginacji i dodamy je na dole tabeli.

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