Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Formulário de busca filtro dinâmico com paginação em mysql php

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Formulário de busca filtro dinâmico com paginação em mysql php

    Trata-se do seguinte, tenho uma página search.php onde realizo uma busca por seleção (Cargo, Escolaridade, Sexo, Cidade, Idade Mínima e Idade Máxima), estes valores já estão cadastrado no BD Mysql, e não importando a maneira de escolha ou a combinação entre as opções o resultado sai como esperado. Mostrando inclusive a quantidade de páginas correspondentes a busca feita.

    Como exemplo da minha primeira query (echo $sql), obtemos: SELECT * FROM tab_candidato WHERE `cargo_pretendido` = 'Analista e Desenvolvedor de Sistemas' AND `nivel` = 'Ensino Superior' AND `sexo` = 'Masculino' AND `cidade` = 'Palmas' AND `idade` >= '25' AND `idade` <= '55' ORDER BY nome ASC LIMIT 0,10

    Trazendo realmente o que foi realizado na busca por filtro.

    Na minha segunda query (echo $strCount) o resultado da paginação: SELECT * FROM tab_candidato WHERE `cargo_pretendido` = 'Analista e Desenvolvedor de Sistemas' AND `nivel` = 'Ensino Superior' AND `sexo` = 'Masculino' AND `cidade` = 'Palmas' AND `idade` >= '25' AND `idade` <= '55' ORDER BY nome ASC

    O total contado está correto (echo $total) e mostra, o valor: 19 linhas, perfazendo um total de 2 páginas. Já que o máximo por página é 10 linhas

    O problema é quando acesso as próximas páginas, elas me retornam vazia, ou seja, ao debugar posso perceber que a <div> correspondente não recebe os valores.

    OBS:- Quando da busca eu transformo cada opção em array, para melhor utilização da mesma. O código esta em uma única página search.php.

    Código PHP:
    ini_set('display_errors'true);
    error_reporting(E_ALL);

    require 
    'conexao.php'
    Código HTML:
    <!-- GERAL -->
    <div class="pg_candidatos">
      <!-- FILTRO DE BUSCA -->
      <fieldset>
      <legend>Selecione as Opções da Pesquisa</legend>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
          <ul>
            <!-- CARGO -->
            <li>
              <select name="comboCargo">
                <option value="0" selected="selected">Cargo</option>
                <?php
                  $qrCargo = mysqli_query($dados, "SELECT DISTINCT cargo_pretendido FROM tab_candidato ORDER BY cargo_pretendido ASC") or die(mysqli_error());
                  while ($linhaCargo = mysqli_fetch_array($qrCargo)) {
                ?>
                <option value="<?php echo $linhaCargo['cargo_pretendido']; ?>">
                  <?php echo $linhaCargo['cargo_pretendido']; ?>
                </option>
                <?php } ?>
              </select>
            </li>
            <!-- ESCOLARIDADE -->
            <li>
              <select name="comboNivel">
                <option value="0" selected="selected">Escolaridade</option>
                <?php
                  $qrNivel = mysqli_query($dados, "SELECT DISTINCT nivel FROM tab_candidato ORDER BY nivel ASC") or die(mysqli_error());
                  while ($linhaNivel = mysqli_fetch_array($qrNivel)) {
                ?>
                <option value="<?php echo $linhaNivel['nivel']; ?>">
                  <?php echo $linhaNivel['nivel']; ?>
                </option>
                <?php } ?>
              </select>
            </li>
            <!-- SEXO -->
            <li>
              <select name="comboSexo">
                <option value="0" selected="selected">Sexo</option>
                <?php
                  $qrSexo = mysqli_query($dados, "SELECT DISTINCT sexo FROM tab_candidato ORDER BY sexo ASC") or die(mysqli_error());
                  while ($linhaSexo = mysqli_fetch_array($qrSexo)) {
                ?>
                <option value="<?php echo $linhaSexo['sexo']; ?>">
                  <?php echo $linhaSexo['sexo']; ?>
                </option>
                <?php } ?>
              </select>
            </li>
            <!-- CIDADE -->
            <li>
              <select name="comboCidade">
                <option value="0" selected="selected">Cidade</option>
                <?php
                  $qrCidade = mysqli_query($dados, "SELECT DISTINCT cidade FROM tab_candidato ORDER BY cidade ASC") or die(mysqli_error());
                  while ($linhaCidade = mysqli_fetch_array($qrCidade)) {
                ?>
                <option value="<?php echo $linhaCidade['cidade']; ?>">
                  <?php echo $linhaCidade['cidade']; ?>
                </option>
                <?php } ?>
              </select>
            </li>
            <!-- IDADE MÍNIMA -->
            <li>
              <select name="comboIdadeMin">
                <option value="0" selected="selected">Idade Mínima</option>
                <?php
                  $qrIdadeMin = mysqli_query($dados, "SELECT DISTINCT idade FROM tab_candidato ORDER BY idade ASC") or die(mysqli_error());
                  while ($linhaIdadeMin = mysqli_fetch_array($qrIdadeMin)) {
                ?>
                <option value="<?php echo $linhaIdadeMin['idade']; ?>">
                  <?php echo $linhaIdadeMin['idade']; ?>
                </option>
                <?php } ?>
              </select>
            </li>
            <!-- IDADE MÁXIMA -->
            <li>
              <select name="comboIdadeMax">
                <option value="0" selected="selected">Idade Máxima</option>
                <?php
                  $qrIdadeMax = mysqli_query($dados, "SELECT DISTINCT idade FROM tab_candidato ORDER BY idade ASC") or die(mysqli_error());
                  while ($linhaIdadeMax = mysqli_fetch_array($qrIdadeMax)) {
                ?>
                <option value="<?php echo $linhaIdadeMax['idade']; ?>">
                  <?php echo $linhaIdadeMax['idade']; ?>
                </option>
                <?php } ?>
              </select>
            </li>
            <div class="limpar"></div>
          </ul>
          <div class="limpar"></div>
          <div class="bt_pesquisar"><input type="submit" value="Buscar" /></div>
          <div class="limpar"></div>
        </form>
      </fieldset>
      <!-- /FILTRO DE BUSCA -->
      <!-- RETORNO DA BUSCA -->
      <fieldset>
      <legend>Resultado da Pesquisa</legend>
    Código PHP:
          $maximo 10;
          
    $pagina = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1;
          
    $inicio = ($maximo $pagina) - $maximo;

          if (
    $_SERVER['REQUEST_METHOD'] == "POST") {

            
    $where    = array();
            
    $cargo    $_REQUEST['comboCargo'];
            
    $nivel    $_REQUEST['comboNivel'];
            
    $sexo     $_REQUEST['comboSexo'];
            
    $cidade   $_REQUEST['comboCidade'];
            
    $idademin $_REQUEST['comboIdadeMin'];
            
    $idademax $_REQUEST['comboIdadeMax'];

            if ( 
    $cargo )    { $where[] = " `cargo_pretendido` = '{$cargo}'    "; }
            if ( 
    $nivel )    { $where[] = " `nivel`            = '{$nivel}'    "; }
            if ( 
    $sexo )     { $where[] = " `sexo`             = '{$sexo}'     "; }
            if ( 
    $cidade )   { $where[] = " `cidade`           = '{$cidade}'   "; }
            if ( 
    $idademin ) { $where[] = " `idade`           >= '{$idademin}' "; }
            if ( 
    $idademax ) { $where[] = " `idade`           <= '{$idademax}' "; }

            
    $sql "SELECT * FROM tab_candidato";
              if( 
    sizeof$where ) )
                
    $sql .= ' WHERE '.implode' AND '$where ).' ORDER BY nome ASC LIMIT '.$inicio.','.$maximo;

              echo 
    $sql;
              echo 
    '<br />';

              
    $query  mysqli_query($dados$sql) or die( mysqli_error() );

              
    $contar mysqli_num_rows($query);

              if (
    $contar == 0) {
                echo 
    "<p>Não foram encontrados registros!</p>";

              } else {
                while (
    $rs mysqli_fetch_array($query)) {
                  
    extract($rs); 
    Código HTML:
        <div class="bx_resultado">
          <div class="campo_result1"><?php echo $nome; ?></div>
          <div class="campo_result2"><?php echo $email; ?></div>
          <div class="campo_result3"><?php echo $celular; ?></div>
          <div class="campo_result4"><a href="visualizar.php?id=<?php echo $id; ?>"><img title="Clique visualizar" alt="Clique visualizar" src="images/ico_pesq.png"></a></div>
          <div class="limpar"></div>
        </div>
        <div class="limpar"></div>
    Código PHP:
                }//while
              
    }//else
              
    $strCount "SELECT * FROM tab_candidato";
                if( 
    sizeof$where ) )
                  
    $strCount .= ' WHERE '.implode' AND '$where ).' ORDER BY nome ASC';

                echo 
    $strCount;
                echo 
    '<br />';

                
    $qrCount mysqli_query($dados$strCount) or die( mysqli_error() );
                echo 
    $total   mysqli_num_rows($qrCount);
                echo 
    '<br />';

                
    $pgs ceil($total $maximo);

                
    $menos $pagina 1;
                
    $mais $pagina 1;

                
    // Mostragem de pagina
                
    if ($menos 0) {
                  echo 
    "<a href=".$_SERVER['PHP_SELF']."?pagina=$menos>Anterior</a>&nbsp; ";

                }
                
    // Listando as paginas
                
    for ($i 1$i <= $pgs$i++) {
                  if (
    $i != $pagina) {
                    echo 
    "<a href=".$_SERVER['PHP_SELF']."?pagina=".$i.">$i</a> | ";
                  } else {
                    echo 
    " <strong>".$i."</strong> | ";
                  }
                }
                if (
    $mais <= $pgs) {
                  echo 
    "<a href=".$_SERVER['PHP_SELF']."?pagina=$mais>Próxima</a> ";
                }
          }
    //if 
    Código HTML:
      </fieldset>
      <!-- /RETORNO DA BUSCA -->
    </div>
    <!-- /GERAL -->
    No aguardo da atenção costumeira,

    Abraços,

    Rogarfil
    Similar Threads
X
Working...
X