Ir para conteúdo
Fórum Script Brasil
  • 0

Páginação


Anderson J Raimundo

Pergunta

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 para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...