Jump to content
Fórum Script Brasil
  • 0

Páginação


Anderson J Raimundo

Question

Olá para todos.

Bom tenho problema com paginação.

É o seguinte.

Quando mando exibir todos os registros ele exbie sem problema algum.

Porém quando mando fazer uma consulta específica ele não funciona direito.

Por exemplo:

Tenho 68 registros cadastrados.

Mando realizar uma consulta para exibir somente nomes de funcionário que começam com a letra "A". Nesse caso existem 35 funcionários.

Até aí ele mostra 35 funcionário que começam com a letra A. Porém quando vou para a segunda página ele volta a exibir todos os 68 funcionários.

Vou postar os dois códigos: uma de paginação e outro sobre consulta.

Obrigado.

paginação.php

<?php

                //Registros por página
        $numreg = 5; // Quantos registros por página vai ser mostrado
        if (!isset($_GET['pg'] )) {
                $_GET['pg']  = 0;
        }
        $inicial = $_GET['pg'] * $numreg; 

   // PREPARANDO A QUERY COM OS FILTROS NECESSÁRIOS
      $cCompQuery_Funcionario = "AND( A.NOM_FUNCIONARIO ) LIKE('".$_POST['txt_nome']."%')";
      $cCompQuery_Campus = "AND A.COD_CAMPUS = '".$_POST['cmb_campus']."'";
      $cCompQuery_Depto = "AND A.COD_DEPTO = '".$_POST['cmb_depto']."'";


 if  ( (trim($_POST['txt_nome']) == "") and ( trim($_POST['cmb_campus']) == 0)  and ( trim($_POST['cmb_depto']) == 0) ) {
     $cQuery = mysql_query(" SELECT A.COD_RAMAL
                     ,B.NOM_FANTASIA
                     ,C.DESC_CENTRO_CUSTO
                     ,A.NOM_FUNCIONARIO
                ,A.DDD, A.TELEFONE, A.TELEFONE2
                     ,A.IDT_FUNCAO
                     ,A.IDT_RAMAL
                                         ,A.IDT_EMAIL
                                         ,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                limit $inicial, $numreg") or die (mysql_error());
         
                $cQuery_contar1 = mysql_query (" SELECT A.COD_RAMAL
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL") or die (mysql_error());
                                
        $quantreg = mysql_num_rows($cQuery_contar1);                            
         
 }else{
   // EXECUTANDO A QUERY PARA BUSCA DAS INFORMAÇÕES CONFORME FILTRO SOLICITADO
   $cQuery = mysql_query(" SELECT A.COD_RAMAL
                     ,B.NOM_FANTASIA
                     ,C.DESC_CENTRO_CUSTO
                     ,A.NOM_FUNCIONARIO
                                         ,A.DDD, A.TELEFONE, A.TELEFONE2
                     ,A.IDT_FUNCAO
                     ,A.IDT_RAMAL
                                         ,A.IDT_EMAIL
                                         ,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                                  ".$cCompQuery_Funcionario."
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                limit $inicial, $numreg") or die ("retornou vazio");
   
      $cQuery_contar2 = mysql_query(" SELECT A.COD_RAMAL
                     
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                                  ".$cCompQuery_Funcionario."
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                ") or die ("Nenhum resultado encontrado!");
                                
        $quantreg = mysql_num_rows($cQuery_contar2);                            
   
}
   if ( (trim($_POST['txt_nome']) == "") and ( trim($_POST['cmb_campus']) != 0)  and ( trim($_POST['cmb_depto']) == 0) ){
      $cCompQuery_Campus = "AND A.COD_CAMPUS = '".$_POST['cmb_campus']."'";
          
   
   // EXECUTANDO A QUERY PARA BUSCA DAS INFORMAÇÕES CONFORME FILTRO SOLICITADO
   $cQuery = mysql_query(" SELECT A.COD_RAMAL
                     ,B.NOM_FANTASIA
                     ,C.DESC_CENTRO_CUSTO
                     ,A.NOM_FUNCIONARIO
                                         ,A.DDD, A.TELEFONE, A.TELEFONE2
                     ,A.IDT_FUNCAO
                     ,A.IDT_RAMAL
                                         ,A.IDT_EMAIL
                                         ,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                                  ".$cCompQuery_Campus."
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                limit $inicial, $numreg") or die ("Nenhum resultado encontrado!");
      
      $cQuery_contar3 = mysql_query(" SELECT A.COD_RAMAL
                     
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                                  ".$cCompQuery_Campus."
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                ") or die ("Nenhum resultado encontrado!");
   
        $quantreg = mysql_num_rows($cQuery_contar3);
   
   }
   
   if ( (trim($_POST['txt_nome']) == "") and ( trim($_POST['cmb_campus']) != 0)  and ( trim($_POST['cmb_depto']) != 0) ){
      $cCompQuery_Campus = "AND A.COD_CAMPUS = '".$_POST['cmb_campus']."'";
          $cCompQuery_Depto = "AND C.COD_CENTRO_CUSTO = '".$_POST['cmb_depto']."'";
   
   // EXECUTANDO A QUERY PARA BUSCA DAS INFORMAÇÕES CONFORME FILTRO SOLICITADO
   $cQuery = mysql_query(" SELECT A.COD_RAMAL
                     ,B.NOM_FANTASIA
                     ,C.DESC_CENTRO_CUSTO
                     ,A.NOM_FUNCIONARIO
                                         ,A.DDD, A.TELEFONE, A.TELEFONE2
                     ,A.IDT_FUNCAO
                     ,A.IDT_RAMAL
                                         ,A.IDT_EMAIL
                                         ,A.DDD_CELULAR, A.CELULAR, A.CELULAR2
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                                  ".$cCompQuery_Campus."
                                  ".$cCompQuery_Depto."
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                limit $inicial, $numreg") or die (mysql_error());
   
      $cQuery_contar4 = mysql_query(" SELECT A.COD_RAMAL
                     
                 FROM ramais A
                     ,empresas_filiais B
                     ,centros_custos C
                WHERE A.COD_CAMPUS = B.COD_EMPRESA
                  AND A.COD_DEPTO  = C.COD_CENTRO_CUSTO
                                  ".$cCompQuery_Campus."
                                  ".$cCompQuery_Depto."
                ORDER BY B.NOM_FANTASIA, C.DESC_CENTRO_CUSTO, A.NOM_FUNCIONARIO, A.IDT_RAMAL
                                ") or die (mysql_error());
                                
                                        $quantreg = mysql_num_rows($cQuery_contar4);
   }

   //   $quantreg = mysql_num_rows($cQuery_contar);

                                //Verifica total de registros encontrados
                if ($quantreg > 1){
                        echo "<font color=#FFFFFF span class=Estilo12-norm-branco> Foram encontrados ".$quantreg." resultados<br></font>"; 
                }else if ($quantreg < 1){
                        echo "<font color=#CCCCCC span class=Estilo12-norm-branco> Foi encontrado ".$quantreg." resultado<br></font>";
                }else if ($quantreg = 1){
                        echo "<font color=#CCCCCC span class=Estilo12-norm-branco> Foi encontrado ".$quantreg." resultado<br></font>";;
                }
?>
paginação.php
<?php                
        $quant_pg = ceil($quantreg/$numreg);
        $quant_pg++;
        
         // Verifica se esta na primeira página, se não estiver ele libera o link para anterior
          if ( $_GET['pg']  > 0) { 
                  echo "<a href=".$_SERVER['REQUEST_URI']."?action=$action&act=$act&pg=".($_GET['pg'] -1) ."&busca=$busca class=pg>« anterior</a>";
          } else { 
                  echo "<font color=#999999>« anterior</font>";
           }
        // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
          for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 
         // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
              if ($_GET['pg'] == ($i_pg-1)) { 
                 echo " <span class=pgoff>[$i_pg]</span> ";
              } else {
                 $i_pg2 = $i_pg-1;
                 echo " <a href=".$_SERVER['REQUEST_URI']."?action=$action&act=$act&pg=$i_pg2&busca=$busca class=pg>$i_pg</a> ";
              }
          }                                     
        // Verifica se esta na ultima página, se não estiver ele libera o link para próxima
              if (($_GET['pg'] +2) < $quant_pg) { 
                 echo "<a href=".$PHP_SELF."?action=$action&act=$act&pg=".($_GET['pg'] +1)."&busca=$busca class=pg>próximo »</a>";
              } else { 
                 echo "<font color=#999999>próximo »</font>";
              }
?>

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Olá!

Seguinte :

Quem viu o código que postei mostra 4 condições

1 - Que exibe todos os funcionarios cadastrados.

2 - Que exibe por nome.

3 - Que exibe todos os funcionarios cadastrados por uma filial, campo nome em branco.

4 - Que exibe todos os funcionarios cadastrados por setor de uma filial, campo nome em branco.

Por exemplo.

Se eu fizer a opção número 4, vai exibir 10 funcionários de um setor, ou seja dua páginas, pois neesse exemplo coloquei pra exibir 5 por página. Mas na hora que vou para página 2, ele exibe todos os funcionário cadastrados.

Link to comment
Share on other sites

  • 0

O problema é que você só passa a informação da página e não do que esta buscando, ai ele sempre cai no else... você vai ter que passar os parâmetro da busca no link onde você passa a informação da página...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...