Changing pages according to the searched field

Asked

Viewed 47 times

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:

inserir a descrição da imagem aqui

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.

  • 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.

1 answer

0

I added in the pagination the value of the search, so when paging it will not lose the search.

I’ve put the case condition in place for $_POST[]; it saves the search variable if it does not check for $_GET[];, test to see how he will behave with this your search in ajax.

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

if(isset($_POST['busca'])){
    $busca = $_GET['busca'];
}
else if(isset($_GET['busca'])){
    $busca = $_GET['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){

    if($busca){
        $url_busca = "busca={$busca}&";
    }
    echo '<ul class="pagination center" >';
    echo '<li class="waves-effect"><a href="'.$url_busca.'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="'.$url_busca.'manual_sistema.php?page='.$i.'">'.$i.'</a></li>';  
    }

    echo '';
    echo '<li class="waves-effect"><a href="'.$url_busca.'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>'

Browser other questions tagged

You are not signed in. Login or sign up in order to post.