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.
No aguardo da atenção costumeira,
Abraços,
Rogarfil
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> ";
}
// 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 -->
Abraços,
Rogarfil