PHP é usado principalmente para armazenar e exibir dados de um banco de dados. A paginação pode ser feita com ajax, mas aqui isso é feito com não-ajax. Neste tutorial, aprenderemos o paginação em PHP com MySQL . Vamos fazer uma breve revisão sobre paginação com um exemplo -
É possível que uma consulta SQL SELECT retorne milhões de registros. Não é uma boa ideia exibir todos os registros em uma única página. Uma grande lista de registros em uma única página pode levar muito tempo para carregar a página e também consumir tempo para encontrar dados específicos. Isso pode causar (levar a) confusão na mente do usuário. Portanto, divida esses registros em várias páginas de acordo com a necessidade do usuário.
Então, o que podemos fazer para distribuir esse grande número de registros em número de páginas? O método de distribuição de uma única lista em múltiplas páginas é conhecido como Paginação . Paginação refere-se a mostrar o resultado da sua consulta em várias páginas em vez de uma única página.
O que é paginação?
A paginação é uma forma de mostrar os dados em várias páginas, em vez de colocá-los em uma única página. A paginação ajuda a dividir os registros em diversas páginas, o que torna os dados mais legíveis e compreensíveis.
A paginação é uma tarefa comum para desenvolvedores PHP. MySQL ajuda o desenvolvedor a criar paginação usando LIMITE cláusula, que leva dois argumentos. O primeiro argumento como DESVIO e o segundo argumento é número de registros que retornará do banco de dados.
Vejamos algumas vantagens e desvantagens de usar o conceito de paginação em PHP -
java converte string em int
Vantagens da paginação
- A paginação é muito útil em projetos de grande escala porque torna o webwork mais profissional. Não apenas mais profissional, mas também torna a página web muito mais rápida, precisa e eficiente.
- Com a ajuda da paginação, podemos economizar o tempo de carregamento de uma página dividindo os dados em várias páginas. Isso nos evita carregar muitas informações de uma vez.
Por exemplo - Uma página da web com 1.000 imagens levará mais tempo para carregar imagens do que 50 imagens em cada página da web.
Isso significa que milhares de imagens precisam de milhares de solicitações HTTP, o que faria com que a página não respondesse. Este problema é resolvido limitando a quantidade de dados com a ajuda da paginação usando a cláusula LIMIT. - O uso da paginação melhora a experiência do usuário, a receita publicitária e diminui o tempo de carregamento da página.
Desvantagens da paginação
Embora existam algumas vantagens poderosas da paginação, muitos desenvolvedores ainda evitam usá-la. Junto com algumas vantagens poderosas, também existem algumas desvantagens da paginação, que são as seguintes:
- A paginação em si é uma grande sobrecarga no PHP, o que é uma das desvantagens da paginação. É completamente uma sobrecarga, pois é um recurso externo que pode ser implementado ao custo de marcação, estilo e lógica estranhos. Um pequeno conjunto de dados frequentemente ignorado para usar paginação.
- A paginação pode causar baixo page rank no mecanismo de busca porque quando uma página está fora da página inicial e requer vários cliques, geralmente não obtém um page rank alto.
- Também limita o número de links, compartilhamentos sociais, número total de resultados visíveis na página da web e texto âncora que uma página recebe quando as informações são divididas em várias páginas.
Você pode evitar o uso da técnica de paginação modificando a estrutura da sua configuração de navegação.
Implementação de Paginação com PHP e MySQL
Para implementar a paginação, precisamos de um grande conjunto de dados para aplicar a paginação a ele. Portanto, primeiro precisamos criar um banco de dados e uma tabela. Depois disso, forneça os registros da tabela e comece a codificar para criar a paginação. Para que os dados obtidos do banco de dados possam ser divididos em várias páginas.
Aqui apresentaremos dois exemplos de paginação. O primeiro exemplo é um exemplo simples e básico de criação de paginação sem CSS, enquanto no segundo exemplo criaremos paginação de forma atrativa usando CSS e bootstrap. Você pode ver a saída de ambos. Abaixo estão as etapas fornecidas para a criação da paginação;
Etapas simples para criar paginação -
- Crie um banco de dados e uma tabela. Forneça uma lista de registros na tabela.
- Conecte-se ao banco de dados MySQL.
- Crie o link de paginação para dividir os dados em várias páginas e adicioná-los ao final da tabela.
- Busque dados do banco de dados e exiba-os em várias páginas.
Siga o passo abaixo um por um e crie uma paginação simples.
Exemplo 1
O código abaixo é um exemplo simples de paginação, que é feita em PHP com a ajuda do banco de dados MySQL. Ele divide os dados obtidos do banco de dados em várias páginas. Neste exemplo, criaremos a paginação para que os alfabetos sejam exibidos em diversas páginas.
Criação de banco de dados
Primeiro de tudo, crie um banco de dados nomeado por paginação como criamos e uma tabela dentro dela chamada alfabeto . Criar atributo por nome eu ia e alfabeto e forneça os dados na tabela.
Conectividade de banco de dados
Conectar o arquivo PHP ao banco de dados é uma tarefa necessária. Para que você possa exibir os dados armazenados no banco de dados na página da web. Portanto, conecte o banco de dados em seu arquivo PHP para mostrar os dados na página web.
comparação de string c#
Você pode escrever o código de conectividade do banco de dados no mesmo arquivo, bem como mantê-lo separado em outro arquivo e incluí-lo no arquivo PHP necessário. Código para conexão de banco de dados-
$conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); }
Neste tutorial, estamos usando mysqli extensão. Portanto, todas as consultas são escritas de acordo com o formato mysqli.
Obtenha o número da página atual
O código abaixo determina o número da página que o usuário está visitando no momento. Caso não esteja presente, por padrão o número da página é definido como 1.
if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; }
Fórmula para paginação
Para paginação, você precisa definir o limite do número de registros a serem exibidos por página. Aqui, definimos o limite de resultado por página como 10, para que ele seja exibido em cada página conforme indicado abaixo -
atriz indiana rani mukerji
Página 1 - A a J (1-10)
Página 2 - K a T (11-20)
Página 3 - U a Z (21-26)
$results_per_page = 10; $page_first_result = ($page-1) * $results_per_page;
Obtenha o número total de páginas
$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);
Recuperar dados e exibir na página da web
O código abaixo é usado para recuperar os dados do banco de dados e exibi-los nas páginas da web que são divididas adequadamente.
$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>'; }
Exibir o link das páginas em URL
O uso deste código de URL da página da web mudará para cada página.
métodos abstratos
for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; </=>
Código Final
Agora, reúna todos os códigos em um único arquivo para finalizar a paginação.
Arquivo: 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 . ' '; } ?> </=>
Saída:
Veja a saída abaixo para o exemplo de paginação acima -
Exemplo 2
O exemplo abaixo é outro exemplo de paginação em que usamos CSS junto com HTML para tornar a visualização da página web mais atraente. CSS torna a página da web mais criativa e atraente. Por outro lado, o MySQL armazena os dados no banco de dados. Assim, você pode aprender a paginação muito melhor.
Escrevemos o código inteiro em um único arquivo, exceto a conectividade do banco de dados. Portanto, criaremos dois arquivos, ou seja, connection.php e index1.php. Salve os dois arquivos em .php extensão. No exemplo abaixo, você aprenderá a criar uma paginação mais criativa e atrativa.
Arquivo: conexão.php
Arquivo: 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;>
Buscar dados e exibir na página da web
Como criamos o conjunto de dados, agora precisamos buscá-lo e exibi-lo em várias páginas da web. O código abaixo é usado para recuperar os dados do banco de dados e exibi-los nas páginas da web que são divididas adequadamente.
Buscar dados
Depois de estabelecer a conexão com o banco de dados no arquivo 'connection.php', precisamos apenas importá-lo para o nosso código usando a palavra-chave require_once. Definiremos explicitamente o número de registros por página a serem exibidos.
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);
Mostrar dados
Esta seção é muito simples. Nesta seção, iteramos o loop sobre os registros que buscamos e exibimos cada registro armazenado nas colunas da tabela.
lista de estados
<tr> <td></td> <td></td> <td></td> <td></td> </tr>
Criação de link de paginação
Agora, o código mais importante é a criação do link de paginação. Assim, criaremos os links Anterior, Próximo e numérico para paginação e os adicionaremos ao final da tabela.
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;>