Jump to content
toarelli

Sistema de Busca com Paginação

Recommended Posts

toarelli

Caros amigos

Recorro ao auxílio dos amigos, pois já não consigo mais entender.

Estou criando uma rotina em PHP  com opção de: Busca / Paginação.

Consegui fazer a busca, mas não estou conseguindo paginar a página, abaixo o código que estou usando:

<?php include_once("header.php"); ?>

<?php include_once("menu.php");?>     


<div class="content-wrapper">
    <!-- Content Header (Page header) -->
    <section class="content-header">
      <h1>
        Clientes
      </h1>
      <ol class="breadcrumb">
        <li><a href="painel.php?exe=home/home"><i class="fa fa-dashboard"></i> Home</a></li>
        <li class="active">Clientes</li>
      </ol>
    </section>

    <!-- Main content -->
    <section class="content">

      <div class="row">

        <div class="box box-primary">

            <div class="box-header">
              <i class="ion ion-clipboard"></i>
              <h3 class="box-title">Lista de Clientes</h3>              

              <a href="painel.php?exe=admin/clientes/clientes_novo" type="button" class="btn btn-default pull-right">
              <i class="fa fa-plus"></i> Cadastrar Clientes</a>

            </div><!--Fim div box-header --> 

            <form name="frm_busca" action="" enctype="multipart/form-data" method="post" >
              <div class="col-sm-6 invoice-col">
                 <div class="input-group margin">
                  <input type="text" name="pesquisa" id="pesquisa" class="form-control" onkeyup="up(this)" 
                         placeholder="Digite a Razão Social ou um Status" >
                      
                    <span class="input-group-btn">

                      <button type="submit" name="busca" id="busca" class="btn btn-primary btn-flat" value="Pesquisar" >
                              Pesq. / Limpa
                      </button>

                     </span>
                      
                 </div>    
              </div>
            </form>

            <table id="tabClienteLista" class="table table-bordered table-hover">
                <thead>
                    <tr style="background: #26C776;">
                      <td align="center"><strong>Código:</strong></td>
                      <td align="center"><strong>Razão Social:</strong></td> 
                      <td align="center"><strong>Nome Fantasia:</strong></td> 
                      <td align="center"><strong>Categoria de Acesso:</strong></td> 
                      <td align="center"><strong>Status:</strong></td>                                             
                      <td align="center"><strong>Cadastrado:</strong></td>    
                      <td align="center"><strong>Ação:</strong></td> 
                    </tr>
                </thead>
 
                <?php

                  //Paginação da página
                  $pag = isset($_GET['pag']) ? (int)$_GET['pag']  : 1;

                  $maximo = '10'; //RESULTADOS POR PÁGINA
                  $inicio = ($pag * $maximo) - $maximo; 

                  $where = "";

                  $pesquisaGet = isset($_GET['pesquisa']) ? $_GET['pesquisa'] : false;
                  $pesquisa = isset($_POST['pesquisa']) ? $_POST['pesquisa'] : $pesquisaGet;   

                  //Função para buscar os dados digitados
                  if( isset($_POST['busca']) && $_POST['busca'] == 'Pesquisar' ){

                        if (isset($_POST['pesquisa'])){
                            
                            $where = "WHERE razaoSocial LIKE '%".$pesquisa."%' OR 
                                            clienteStatus LIKE '%".$pesquisa."%' ";

                          } elseif (!isset($_POST['pesquisa'])) {     
                            
                            $where=" ORDER BY clienteId ASC LIMIT ".$inicio.','.$maximo;                         
                          }     
                  }                  
                
                  $sql_pegaCliente = "SELECT * FROM clientes $where ";

                  try{
                    $query_pegaClientes = $conecta->prepare($sql_pegaCliente);
                    $query_pegaClientes->execute();
                    
                    $res_queryPegaCliente = $query_pegaClientes->fetchAll(PDO::FETCH_ASSOC);
                    $count_pegaClientes   = $query_pegaClientes->rowCount(PDO::FETCH_ASSOC);

                    }catch(PDOexcetpion $error_clientes){
                      echo 'Erro ao seleciona os clientes!';  
                    }
                    
                    foreach($res_queryPegaCliente as $resCliente){
                            $clienteId           = $resCliente['clienteId'];
                            $clienteRazaoSocial  = $resCliente['razaoSocial'];
                            $clienteNomeFantasia = $resCliente['nome'];
                            $clienteCategoria    = $resCliente['clienteCategoria'];
                            $clienteStatus       = $resCliente['clienteStatus'];
                            $clienteCriadoEM     = $resCliente['criadoEM'];
                        
                ?> 
                
                    <!-- Mostra na Tabela apenas Cliente e Fornecedor -->
                    <?php if($clienteCategoria != "administrador" && $clienteCategoria != "fornecedor") { ?>
                        <tr class="tr_Filtro">
                          <td align="center" width="40"><?php echo $clienteId;?></td>
                          <td align="left" width="200"><?php echo $clienteRazaoSocial;?></td>
                          <td align="left" width="50"><?php echo $clienteNomeFantasia;?></td>
                          <td align="left" width="30">&nbsp;&nbsp;<?php echo $clienteCategoria;?></td>
                          <td align="left" width="15">&nbsp;&nbsp;<?php echo $clienteStatus;?></td>
                          <td align="center" width="10">&nbsp;&nbsp;<?php echo date('d/m/Y',strtotime($clienteCriadoEM)); ?></td>

                          <td align="center" width="30">
                          <form name="edita" action="painel.php?exe=admin/clientes/clientes_editar&clienteid=<?php echo $clienteId;?>" 
                                      enctype="multipart/form-data" method="post" >
                              
                              <input class="btn btn-primary btn-xs" type="submit" name="executar" id="executar" 
                                     style="font-size: 14px;" value="Editar" />

                              <input type="hidden" name="clienteId" value="<?php echo $clienteId;?>" />

                          </form>    
                          </td> 

                        </tr>

                    <?php }//Fim do IF 
                  
                  }//fim foreach
              
              ?>

            </table>

                <!-- Função para informar que nenhum Código Cliente foi encontrado -->
                <tbody>
                    <tr>
                       <?php 
                        if($count_pegaClientes == '0'){
                           echo '<h2>&nbsp;Nenhum registro encontrado!</h2>';
                       echo '<br/>';
                        } else {

                        }
                      ?>
                    </tr>
                </tbody>

            <div class="box-footer clearfix no-border" style="font-size: 16px;">

                <!--Paginação da página -->
                <?php

                  //Faz a conexão com o Banco de Dados
                  $cnx = mysql_connect("localhost", "root", "");
                  mysql_select_db("siscotaweb", $cnx);

                  //USANDO A MESMA SQL QUE QUE USOU PARA RECUPERAR OS RESULTADOS, SE TIVER A PROPRIEDADE WHERE USE A MESMA TAMBÉM
                  $sql_res = mysql_query("SELECT * FROM clientes ORDER BY clienteId ASC");
                  $total = mysql_num_rows($sql_res);           

                  $paginas = ceil($total/$maximo);
                  $links = '10'; //QUANTIDADE DE LINKS NO PAGINATOR
                  
                  echo "<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=1\">Primeira</a>&nbsp;&nbsp;&nbsp;";

                  for ($i = $pag-$links; $i <= $pag-1; $i++){
                    if ($i <= 0){
                    }else{
                     echo"<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
                    }
                  } echo "$pag &nbsp;&nbsp;&nbsp;";

                  for($i = $pag +1; $i <= $pag+$links; $i++){
                    if($i > $paginas){
                    }else{
                     echo "<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=$i\">$i</a>&nbsp;&nbsp;&nbsp;";
                    }
                  }
                  echo "<a href=\"painel.php?exe=admin/clientes/clientes_lista&amp;pag=$paginas\">Última</a>&nbsp;&nbsp;&nbsp;";
                ?> 
                                
          </div>   


        </div><!--Fim div primary -->           

      </div><!--Fim div row -->          

    </section> 

</div>
     
<?php include_once("footer.php");?>

<!--Script para Validar o Formulário -->
<script language="JavaScript" >

    function up(lstr){              //converte minusculas em maiusculas
      var str=lstr.value;           //obtem o valor
      lstr.value=str.toUpperCase(); //converte as strings e retorna ao campo
    }
  

</script> 

 

Como consigo paginar a página.

 

Grato,

 

Toarelli

 

 

Share this post


Link to post
Share on other sites
acao

boas não é fácil dar-te a cana para pescares, porque até há muitos exemplos no Google, é mais fácil dar-te o peixe.

por isso aqui vai:

função que já não uso a muito tempo, não custa nada dar-ta

/**
 * paginação de pagina
 * retorna array
 * @param type $nomePagComExtensao
 * @param type $totalRegistos
 * @param type $qtdRegistosPag
 * @return type array - $valPaginacao = array("paginacao" => $paginacao, "inicio" => $inicio, "limite" => $limite, "pag" =>$pag, "totalPag" => $ultima_pag);
 * exUtiizaçao $arrayPaginacaoVerImag = funcPaginacao("pesquisarAnuncios.php",count($arrayImagens), 1);
 * $arrayPaginacaoVerImag['paginacao'];
 */
function funcPaginacao($nomePagComExtensao,$totalRegistos,$qtdRegistosPag){
    $nomePag = $nomePagComExtensao;
   /* $limite = $qtdRegistosPag; */
    if($totalRegistos > 0 && $qtdRegistosPag > $totalRegistos)
    {
        $limite = $totalRegistos;
    }  else {
        $limite = $qtdRegistosPag;
    }
    if(isset($_GET['pag']))
    {
        $pagGet = ($_GET['pag']);
        $pag = filter_var($pagGet, FILTER_VALIDATE_INT);
    }else{
        $pag = 1;
    }
    $i = 0;
    $inicio = 0;
    if ($pag > 1)
    {
            $inicio = ($pag - 1) * $limite ;
    } 
    $total = $totalRegistos;
    $prox = $pag + 1;
    $ant = $pag - 1;
    $ultima_pag = ceil($total / $limite);
   /* $penultima = $ultima_pag - 1; */	
    $adjacentes = 2;
    $paginacao = "";
    $espaco = "&nbsp&nbsp";
   /* echo '<div class="Paginacao">'; */

    if ($pag>1)  /* pag >1 (anterior) */
    {
            $paginacao = '<a href="'.$nomePag.'?pag='.$ant.'" rel="nofollow">« anterior</a>'.$espaco.'';
    }
    if ($ultima_pag <= 5)   /*se a pag <= 5 imprime  (1,2,3,4,5) */
    {
            for ($i = 1; $i < $ultima_pag + 1; $i++)
            {
                    if ($i == $pag)
                    {
                            $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                    } else {
                            $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                    }

            }
    } 
    if ($ultima_pag > 5) /* se são mais que 5 pag. */
    {
            if ($pag < 1 + (2 * $adjacentes))  /* se a pag <5 (1,2,3,4,5,...,penultima, ultima) */
            {
                    for ($i=1; $i< 2 + (2 * $adjacentes); $i++)
                    {
                            if ($i == $pag)
                            {
                                    $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                            } else {
                                    $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                            }
                    }
                    $paginacao .= '...';
                    /* $paginacao .= '<a href="verAnunciosAv.php?pag='.$penultima.'">'.$penultima.'</a>'.$espaco.'';  */
                    $paginacao .= '<a href="'.$nomePag.'?pag='.$ultima_pag.'" rel="nofollow"> '.$ultima_pag.' </a>'.$espaco.'';
            }
            elseif($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3) /* se pag >4 e < antepenultima (1,2,...,5pag,...,penultima,ultima  */
            {
                    /* $paginacao .= '<a href="verAnunciosAv.php?pag=1">1</a>'.$espaco.''; //«para dois no inicio abilites e altere a linha a seguir para linha 2»  */				
                    $paginacao .= '<a href="'.$nomePag.'?pag=1" rel="nofollow">1</a>...';	
                    for ($i = $pag-$adjacentes; $i<= $pag + $adjacentes; $i++)
                    {
                            if ($i == $pag)
                            {
                                    $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                            } else {
                                    $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                            }
                    }
                    $paginacao .= '...';
                    /* $paginacao .= '<a href="verAnunciosAv.php?pag='.$penultima.'">'.$penultima.'</a>'.$espaco.''; */
                    $paginacao .= '<a href="'.$nomePag.'?pag='.$ultima_pag.'" rel="nofollow"> '.$ultima_pag.' </a> '.$espaco.'';
            }
            else {    /* se pag >4 e >antepenultima (1,2,...8ultimaspag)	
                       * $paginacao .= '<a href="verAnunciosAv.php?pag=1">1</a>'.$espaco.''; //«para dois no inicio abilites e altere a linha a seguir para linha 2»  */			
                    $paginacao .= '<a href="'.$nomePag.'?pag=1" rel="nofollow">1</a>...  ';	
                    for ($i = $ultima_pag - (0 + (2 * $adjacentes)); $i <= $ultima_pag; $i++)//alterei 4+ para 0+
                    {
                            if ($i == $pag)
                            {
                                    $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                            } else {
                                    $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                            }
                    }
            }
    }
    if ($prox <= $ultima_pag && $ultima_pag > 1) /* alterei de 2 para 1  */
    {
            $paginacao .= '<a href="'.$nomePag.'?pag='.$prox.'" rel="nofollow">proxima »</a>';  /* pr&oacute;xima &raquo;</a>';  */
    } 
    /* $paginacao.= '</div>'; */
    $valPaginacao = array("paginacao" => $paginacao, "inicio" => $inicio, "limite" => $limite, "pag" =>$pag, "totalPag" => $ultima_pag);
    return $valPaginacao;
}

cumpts

acao

Share this post


Link to post
Share on other sites
RenanD
Em 23/04/2018 às 00:29, toarelli disse:

$maximo = '10'; //RESULTADOS POR PÁGINA $inicio = ($pag * $maximo) - $maximo

Isso deveria ser um cálculo numérico? se sim, mude o tipo do valor de $maximo para 10 inteiro, está em String. Nesta consulta, $sql_pegaCliente = "SELECT * FROM clientes $where ", podes fazer isto: $sql_pegaCliente = "SELECT * FROM clientes ".$where;. Espero ter ajudado.

Edited by RenanD

Share this post


Link to post
Share on other sites
toarelli
Em 24/04/2018 às 18:35, acao disse:

boas não é fácil dar-te a cana para pescares, porque até há muitos exemplos no Google, é mais fácil dar-te o peixe.

por isso aqui vai:

função que já não uso a muito tempo, não custa nada dar-ta


/**
 * paginação de pagina
 * retorna array
 * @param type $nomePagComExtensao
 * @param type $totalRegistos
 * @param type $qtdRegistosPag
 * @return type array - $valPaginacao = array("paginacao" => $paginacao, "inicio" => $inicio, "limite" => $limite, "pag" =>$pag, "totalPag" => $ultima_pag);
 * exUtiizaçao $arrayPaginacaoVerImag = funcPaginacao("pesquisarAnuncios.php",count($arrayImagens), 1);
 * $arrayPaginacaoVerImag['paginacao'];
 */
function funcPaginacao($nomePagComExtensao,$totalRegistos,$qtdRegistosPag){
    $nomePag = $nomePagComExtensao;
   /* $limite = $qtdRegistosPag; */
    if($totalRegistos > 0 && $qtdRegistosPag > $totalRegistos)
    {
        $limite = $totalRegistos;
    }  else {
        $limite = $qtdRegistosPag;
    }
    if(isset($_GET['pag']))
    {
        $pagGet = ($_GET['pag']);
        $pag = filter_var($pagGet, FILTER_VALIDATE_INT);
    }else{
        $pag = 1;
    }
    $i = 0;
    $inicio = 0;
    if ($pag > 1)
    {
            $inicio = ($pag - 1) * $limite ;
    } 
    $total = $totalRegistos;
    $prox = $pag + 1;
    $ant = $pag - 1;
    $ultima_pag = ceil($total / $limite);
   /* $penultima = $ultima_pag - 1; */	
    $adjacentes = 2;
    $paginacao = "";
    $espaco = "&nbsp&nbsp";
   /* echo '<div class="Paginacao">'; */

    if ($pag>1)  /* pag >1 (anterior) */
    {
            $paginacao = '<a href="'.$nomePag.'?pag='.$ant.'" rel="nofollow">« anterior</a>'.$espaco.'';
    }
    if ($ultima_pag <= 5)   /*se a pag <= 5 imprime  (1,2,3,4,5) */
    {
            for ($i = 1; $i < $ultima_pag + 1; $i++)
            {
                    if ($i == $pag)
                    {
                            $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                    } else {
                            $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                    }

            }
    } 
    if ($ultima_pag > 5) /* se são mais que 5 pag. */
    {
            if ($pag < 1 + (2 * $adjacentes))  /* se a pag <5 (1,2,3,4,5,...,penultima, ultima) */
            {
                    for ($i=1; $i< 2 + (2 * $adjacentes); $i++)
                    {
                            if ($i == $pag)
                            {
                                    $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                            } else {
                                    $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                            }
                    }
                    $paginacao .= '...';
                    /* $paginacao .= '<a href="verAnunciosAv.php?pag='.$penultima.'">'.$penultima.'</a>'.$espaco.'';  */
                    $paginacao .= '<a href="'.$nomePag.'?pag='.$ultima_pag.'" rel="nofollow"> '.$ultima_pag.' </a>'.$espaco.'';
            }
            elseif($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3) /* se pag >4 e < antepenultima (1,2,...,5pag,...,penultima,ultima  */
            {
                    /* $paginacao .= '<a href="verAnunciosAv.php?pag=1">1</a>'.$espaco.''; //«para dois no inicio abilites e altere a linha a seguir para linha 2»  */				
                    $paginacao .= '<a href="'.$nomePag.'?pag=1" rel="nofollow">1</a>...';	
                    for ($i = $pag-$adjacentes; $i<= $pag + $adjacentes; $i++)
                    {
                            if ($i == $pag)
                            {
                                    $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                            } else {
                                    $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                            }
                    }
                    $paginacao .= '...';
                    /* $paginacao .= '<a href="verAnunciosAv.php?pag='.$penultima.'">'.$penultima.'</a>'.$espaco.''; */
                    $paginacao .= '<a href="'.$nomePag.'?pag='.$ultima_pag.'" rel="nofollow"> '.$ultima_pag.' </a> '.$espaco.'';
            }
            else {    /* se pag >4 e >antepenultima (1,2,...8ultimaspag)	
                       * $paginacao .= '<a href="verAnunciosAv.php?pag=1">1</a>'.$espaco.''; //«para dois no inicio abilites e altere a linha a seguir para linha 2»  */			
                    $paginacao .= '<a href="'.$nomePag.'?pag=1" rel="nofollow">1</a>...  ';	
                    for ($i = $ultima_pag - (0 + (2 * $adjacentes)); $i <= $ultima_pag; $i++)//alterei 4+ para 0+
                    {
                            if ($i == $pag)
                            {
                                    $paginacao .= '<a class="atual" href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';				
                            } else {
                                    $paginacao .= '<a href="'.$nomePag.'?pag='.$i.'" rel="nofollow"> '.$i.' </a>'.$espaco.'';	
                            }
                    }
            }
    }
    if ($prox <= $ultima_pag && $ultima_pag > 1) /* alterei de 2 para 1  */
    {
            $paginacao .= '<a href="'.$nomePag.'?pag='.$prox.'" rel="nofollow">proxima »</a>';  /* pr&oacute;xima &raquo;</a>';  */
    } 
    /* $paginacao.= '</div>'; */
    $valPaginacao = array("paginacao" => $paginacao, "inicio" => $inicio, "limite" => $limite, "pag" =>$pag, "totalPag" => $ultima_pag);
    return $valPaginacao;
}

cumpts

acao

Meu amigo, muito grato por sua ajuda.

Peço desculpa por postar minha dúvida, não no intuito de abusar da boa vontade, mas infelizmente programava em Clipper (DOS) e agora estou passando para Web, por tantas dúvidas.

 

Mas DEUS o abençoa por sua ajuda.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.