Pagination with ajax and php

Asked

Viewed 59 times

-3

People help me please I already looked everything and researched about it but nothing worked i have a table with id, name, phone and display this table through the Ajax request because I use a search system without refresh

$(document).ready(function(){
    $.ajax({
        url: 'exibir.php',
        method: 'POST',
        data:'metodo=LISTAR_ARQUIVOS',
        beforeSend:function(){

        },
        success: function(resultado){
            $(".result").html(resultado);
        }

    });
});

and would like to add a limit paging system

$select = $pdo->prepare("SELECT * FROM clientes LIMIT $inicio, $quantidade");

however if I use a normal php pagination system does not work

follows below the view.php that Ajax query, without the traditional php pagination


<?php
    require('action/conexao.php');

    $metodo = $_POST['metodo'];

    switch($metodo){
        case 'LISTAR_ARQUIVOS':

            $pdo = Conexao::getInstance();

            $stmt = $pdo->prepare("SELECT * FROM clientes");
            $stmt->execute();

            if($stmt->rowCount() >=1){
                while($row = $stmt->fetch(PDO::FETCH_ASSOC)):
                    echo 
                    "<tr>
                        <td id='test'>". $row['nome'] ."</td>
                        <td>". $row['telefone'] ."</td>
                    ";
                    ?>
                <td>
                <ul class="actions">
                   <li><a href="" id="<?php echo $row['id'];?>" class="ative btnUpdate"><i class="fas fa-check"></i> Atualizar</a></li><!--
                --><li><a href="" class="cancel"><i class="far fa-eye"></i> Ver</a></li><!--
                --><li><a href="action/cnl.php?id=<?php echo $row['id'];?>" class="cancel"><i class="fas fa-times"></i> Cancel</a></li><!---->
                </ul>
            </td>


                    <?php

                endwhile;    
            echo "</tr>";
?> 


<?php        
            }else{
                echo ('Nenhuma pedido encontrado.');
            }
        break;

    }

?>
  • Important you [Dit] your question and explain objectively and punctually the difficulty found, accompanied by a [mcve] of the problem and attempt to solve. To better enjoy the site, understand and avoid closures and negativities worth reading the Stack Overflow Survival Guide in English.

1 answer

-2


One person answered me by MSG, and for those who need it there is the answer. will need 2 files only one php and one js.

the listing type displays the database list

counter type counts when results are in the database

<?php
    require('action/conexao.php');

    $tipo = $_GET['tipo'];

        if($tipo=='listagem'){
        $pag    =   $_GET['pag'];
        $maximo =   $_GET['maximo'];
        $inicio =   ($pag * $maximo) - $maximo; //Variável para LIMIT da sql
     

            $pdo = Conexao::getInstance();

            $stmt = $pdo->prepare("SELECT * FROM pedidos WHERE nivel=:ni LIMIT $inicio, $maximo");
            $stmt->bindValue(':ni', '1');
            $stmt->execute();

            if($stmt->rowCount() >=1){
                while($row = $stmt->fetch(PDO::FETCH_ASSOC)):
                    echo 
                    "<tr>
                        <td>". $row['revista'] ."</td>
                        <td>". $row['quantidade'] ."</td>
                        <td>". $row['pedido'] ."<br><small>Criado:  ". $row['data'] ."</small></td>
                        <td>". $row['codigo'] ."</td>
                        <td>". $row['preco'] ."</td>
                    ";
                    ?>
                <td>
               
            </td>


                    <?php
                 echo "</tr>";
                endwhile; 
            }else{}       
           

    }elseif($tipo=='contador'){
        $pdo = Conexao::getInstance();

        $stmt = $pdo->prepare("SELECT * FROM pedidos WHERE nivel=:ni");
        $stmt->bindValue(':ni', '1');
        $stmt->execute();

        $contar = $stmt->rowCount();
        
        if($contar > 0){
            echo $contar;
        }

    }else{
        echo 'solicitação invalida';
    }


?>
<script>
var quantidade = 1; //quantidade de itens a ser mostrado por página
var pg = 1; //página inicial - DEIXE SEMPRE 1

$(document).ready(function(){
    getitens(pg,quantidade); //Chamando função que lista os itens
})
    function getitens(pag, maximo){ 
    pg = pag; 
    $.ajax({
    type: 'GET',
    data: 'tipo=listagem&pag='+pag +'&maximo='+maximo,
    url:'exibir.php',
    success: function(retorno){
        $('.result').html(retorno); 
            contador() //Chamando função que conta os itens e chama o paginador
        }
    })
}

function contador(){
    $.ajax({
        type: 'GET',
        data: 'tipo=contador',
        url:'exibir.php',
        success: function(retorno_pg){
            paginador(retorno_pg) 
        }
    })
}
function paginador(cont){

    var totalRegistros = cont;

    if(totalRegistros<=quantidade){
        
    }else{
        $('.paginas').html('<tr></tr>');
        var qtdpaginas  =  Math.ceil(totalRegistros/quantidade)

    var links = 2;
    //desabiltiar ele depois
    if(pg<=1){$('.paginas').append('<a href="#" class="primeira"><i class="fas fa-arrow-left"></i></a>')}
    else{

    $('.paginas').append('<a href="#" class="primeira" id="middle"  onclick="getitens('+(pg-1)+', '+quantidade+')"><i class="fas fa-arrow-left"></i></a>')
}
    for(var i=pg-links; i <= pg-1;i++){
        if(i<=0){}
        else{
            $('.paginas').append('<a href="#" id="middle" onclick="getitens('+i+', '+quantidade+')">'+i+'</a>')
        }
    }
    //pagina ativa
    $('.paginas').append('<a href="#" id="middle" class="ativo" onclick="getitens('+i+', '+quantidade+')">'+pg+'</a>')

    for(var i=pg+1; i <= pg+links;i++){
        if(i>pg+1){}
        else{
            if(pg != qtdpaginas){
            $('.paginas').append('<a href="#" id="middle" onclick="getitens('+i+', '+quantidade+')">'+i+'</td>')
            }else{}
        }
    }

    if(pg != qtdpaginas){
        $('.paginas').append('<a href="#" class="ultima" onclick="getitens('+(pg+1)+', '+quantidade+')"><i class="fas fa-arrow-right"></i></a>')
    }else{
        // Desabilitar o botao ultima pagina
        $('.paginas').append('<a href="#" class="ultima"><i class="fas fa-arrow-right"></i></a>')
    }   
    }
   
}
</script>

  • If this solution solved your problem mark as accepted answer for the question to be closed.

Browser other questions tagged

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