1
I am trying to make a pagination according to the value searched in the field "Search Access".
Paging usually works with all the values of the bank, but when I search for certain access it shows the pagination but does not go to the particular page of the access I searched. Follows gif of example:
In paging, I’m passing the value through the URL, as you can see in the code. I would like a help on how I can resolve this, go to the page according to the access I search.
pagina.php
:
<div class="col s12 l12 paginacao" >
<div class="col l5 s12 right">
<form method="post">
<div class="input-field col s12 l12" >
<input id="pesquisa" name="pesquisa" type="text">
<label for="pesquisa">Pesquisar Acesso...</label>
</div>
</form>
</div>
</div>
<div class="col l12 s11" id="acessosTable"><!-- DIV TABLE !-->
<?php
include_once 'pesquisaAcesso.php';
?>
</div>
<script>
$("#pesquisa").keyup(function(){
var busca = $("#pesquisa").val();
$.post('pesquisaAcesso.php', {busca: busca},function(data){
$("#acessosTable").html(data);
});
});
</script>
pesquisaAcesso.php
:
<?php
include_once '../conecta_banco.php';
@define('QTDE_REGISTROS', 5); //define os acessos listados por pagina
@define('RANGE_PAGINAS', 4); //define as paginas que ira mostrar de acordo com a atual.
$pagina_atual = (isset($_GET['page']) && is_numeric($_GET['page'])) ? $_GET['page'] : 1; //operador ternario || verifica se existe o numero da pag, caso nao, atribui a pagina 1 ao mesmo
$linha_inicial = ($pagina_atual -1) * QTDE_REGISTROS; //calcula a linha inicial da consulta para mostrar a lista dos acessos
@$busca = $_POST['busca'];
$query = $conecta->prepare("SELECT * FROM acessos WHERE descricao LIKE '%$busca%' LIMIT {$linha_inicial}, " . QTDE_REGISTROS);
$query->execute();
$fetchAll = $query->fetchAll();
$count= $query->rowCount();
//conta todos os registros que existem na tabela
$sqlContador = "SELECT COUNT(*) AS total_registros FROM acessos where descricao LIKE '%$busca%' ";
$stm = $conecta->prepare($sqlContador);
$stm->execute();
$valor = $stm->fetch(PDO::FETCH_OBJ);
/* Idêntifica a primeira página */
$primeira_pagina = 1;
/* Cálcula qual será a última página */
$ultima_pagina = ceil($valor->total_registros / QTDE_REGISTROS);
/* Cálcula qual será a página anterior em relação a página atual em exibição */
$pagina_anterior = ($pagina_atual > 1) ? $pagina_atual -1 : 1;
/* Cálcula qual será a pŕoxima página em relação a página atual em exibição */
$proxima_pagina = ($pagina_atual < $ultima_pagina) ? $pagina_atual +1 : 1;
/* Cálcula qual será a página inicial do nosso range */
$range_inicial = (($pagina_atual - RANGE_PAGINAS) >= 1) ? $pagina_atual - RANGE_PAGINAS : 1 ;
/* Cálcula qual será a página final do nosso range */
$range_final = (($pagina_atual + RANGE_PAGINAS) <= $ultima_pagina ) ? $pagina_atual + RANGE_PAGINAS : $ultima_pagina ;
/* Verifica se vai exibir o botão "Primeiro" e "Pŕoximo" */
$exibir_botao_inicio = ($range_inicial < $pagina_atual) ? 'mostrar' : 'esconder';
/* Verifica se vai exibir o botão "Anterior" e "Último" */
$exibir_botao_final = ($range_final > $pagina_atual) ? 'mostrar' : 'esconder';
if($count >0){
echo '<ul class="pagination center" >';
echo '<li class="waves-effect"><a href="manual_sistema.php?page='.$pagina_anterior.'"><i class="material-icons">chevron_left</i></a></li>';
echo '';
for ($i=$range_inicial; $i <= $range_final; $i++){
$marcador = ($i == $pagina_atual) ? 'active' : '' ;
echo '<li class="waves-effect '.$marcador.' paginas"><a href="manual_sistema.php?page='.$i.'">'.$i.'</a></li>';
}
echo '';
echo '<li class="waves-effect"><a href="manual_sistema.php?page='.$proxima_pagina.'"><i class="material-icons">chevron_right</i></a></li>';
echo '</ul>';
echo '<table class="highlight bordered">';
echo '<head>';
echo '<tr>';
echo '<th>Acesso</th>';
echo '<th>Permissão</th>';
echo '<th>Descrição</th>';
echo '<th>Sistema</th>';
echo '</tr>';
echo '</head>';
foreach($fetchAll as $acessoPesquisa){
echo '<tr>';
echo '<td style="user-select: none;"><b>'.$acessoPesquisa['nome_acesso'].'</b></td>';
echo '<td>'.$acessoPesquisa['permissao'].'</td>';
echo '<td style="user-select: none;">'.$acessoPesquisa['descricao'].'</td>';
echo '<td style="user-select: none;">'.$acessoPesquisa['sistema'].'</td>';
echo '</tr>';
}
}else{
echo '<br><div class="center">Nenhum acesso encontrado com os parâmetros pesquisados.</div>';
}
echo '</table>';
?>
Mano puts the full HTML of the page I’m not seeing the pagination in this html to understand better.
– Bulfaitelo
pagination is already in the.php query, inside for. If I put the pagination already in the html of the.php page, when I searched for some access to pagination it would disappear.
– Diego Souza