Olá, estou tentando montar um sistema de busca com filtro (para buscar questões de múltipla escolha no site) e tenho os seguinte campos para escolha: disciplina, banca, instituição, cargo, nível e ano. Ou seja, muitas opções. O que eu quero saber é como faço para poder escolher um ou dois ou três, mas não todos os campos para ele me mostrar os resultados que estão cadastrados no banco. Pois quando eu coloco AND e NÃO escolho todos os campos ele diz não não tem resultados e quando coloco OR ele me retorna todas as opções escolhidas. Por exemplo: escolhi ano 2015 e disciplina biologia, ele me retorna todas as questões de biologia + todas as questões de 2015 mesmo não sendo de biologia. E é claro que a minha intenção era todas as questões de biologia do ano de 2015.
Segue o código:
//////////////////////DISCIPLINAS//////////////////////////////////////////////
$sql_disciplina = "SELECT * FROM tabela_disciplina ORDER BY Disciplina ASC";
$pega_disciplina = mysqli_query($connection, $sql_disciplina);
////////////////////////////////////////BANCAS/////////////////////////////////
$sql_banca="SELECT * FROM tabela_banca ORDER BY Banca ASC";
$pega_banca = mysqli_query($connection,$sql_banca);
////////////////////////////////////////INSTITUIÇÃO/////////////////////////////////
$sql_instituicao="SELECT * FROM tabela_instituicao ORDER BY Instituicao ASC";
$pega_instituicao = mysqli_query($connection,$sql_instituicao);
////////////////////////////////////////CARGO/////////////////////////////////
$sql_cargo="SELECT * FROM tabela_cargo ORDER BY Cargo ASC";
$pega_cargo = mysqli_query($connection,$sql_cargo);
////////////////////////////////////////ANO////////////////////////////////////
$sql_ano="SELECT * FROM tabela_ano ORDER BY Ano ASC";
$pega_ano = mysqli_query($connection,$sql_ano);
//////////////////////NÍVEL//////////////////////////////////////////////
$sql_nivel = "SELECT * FROM tabela_nivel ORDER BY id_nivel ASC";
$pega_nivel = mysqli_query($connection, $sql_nivel);
////////////////////////////////TRAZ AS QUESTÕES DE ACORDO COM O CRITÉRIO/////
if(!empty($_POST['bt_enviar']))
{
$disciplina = (empty($_POST['Disciplina']))? 'null' : $_POST['Disciplina'];
$banca = (empty($_POST['Banca']))? 'null' : $_POST['Banca'];
$instituicao = (empty($_POST['Instituicao']))? 'null' : $_POST['Instituicao'];
$cargo = (empty($_POST['Cargo']))? 'null' : $_POST['Cargo'];
$ano = (empty($_POST['Ano']))? 'null' : $_POST['Ano'];
$nivel = (empty($_POST['Nivel']))? 'null' : $_POST['Nivel'];
$sql_questao="SELECT * FROM tabela_questao WHERE id_disciplina = $disciplina OR id_banca = $banca OR id_ano = $ano OR id_nivel = $nivel OR id_instituicao = $instituicao OR id_cargo = $cargo";
$seleciona_questao = mysqli_query($connection,$sql_questao);
}
//////////////////////Questões//////////////////////////////////////////////
$sql_questao = "SELECT * FROM tabela_questao ORDER BY id_questao ASC";
$pega_questao = mysqli_query($connection, $sql_questao);
////////////////////////////////TRAZ AS Respostas DE ACORDO COM a questão/////
if(!empty($_POST['bt_enviar']))
{
$questao = (empty($_POST['Descricao']))? 'null' : $_POST['Descricao'];
$sql_resposta="SELECT * FROM tabela_resposta WHERE id_questao = $questao";
$seleciona_resposta = mysqli_query($connection,$sql_resposta);
Pergunta
acscarolina
Olá, estou tentando montar um sistema de busca com filtro (para buscar questões de múltipla escolha no site) e tenho os seguinte campos para escolha: disciplina, banca, instituição, cargo, nível e ano. Ou seja, muitas opções. O que eu quero saber é como faço para poder escolher um ou dois ou três, mas não todos os campos para ele me mostrar os resultados que estão cadastrados no banco. Pois quando eu coloco AND e NÃO escolho todos os campos ele diz não não tem resultados e quando coloco OR ele me retorna todas as opções escolhidas. Por exemplo: escolhi ano 2015 e disciplina biologia, ele me retorna todas as questões de biologia + todas as questões de 2015 mesmo não sendo de biologia. E é claro que a minha intenção era todas as questões de biologia do ano de 2015.
Segue o código:
//////////////////////DISCIPLINAS//////////////////////////////////////////////
$sql_disciplina = "SELECT * FROM tabela_disciplina ORDER BY Disciplina ASC";
$pega_disciplina = mysqli_query($connection, $sql_disciplina);
////////////////////////////////////////BANCAS/////////////////////////////////
$sql_banca="SELECT * FROM tabela_banca ORDER BY Banca ASC";
$pega_banca = mysqli_query($connection,$sql_banca);
////////////////////////////////////////INSTITUIÇÃO/////////////////////////////////
$sql_instituicao="SELECT * FROM tabela_instituicao ORDER BY Instituicao ASC";
$pega_instituicao = mysqli_query($connection,$sql_instituicao);
////////////////////////////////////////CARGO/////////////////////////////////
$sql_cargo="SELECT * FROM tabela_cargo ORDER BY Cargo ASC";
$pega_cargo = mysqli_query($connection,$sql_cargo);
////////////////////////////////////////ANO////////////////////////////////////
$sql_ano="SELECT * FROM tabela_ano ORDER BY Ano ASC";
$pega_ano = mysqli_query($connection,$sql_ano);
//////////////////////NÍVEL//////////////////////////////////////////////
$sql_nivel = "SELECT * FROM tabela_nivel ORDER BY id_nivel ASC";
$pega_nivel = mysqli_query($connection, $sql_nivel);
////////////////////////////////TRAZ AS QUESTÕES DE ACORDO COM O CRITÉRIO/////
if(!empty($_POST['bt_enviar']))
{
$disciplina = (empty($_POST['Disciplina']))? 'null' : $_POST['Disciplina'];
$banca = (empty($_POST['Banca']))? 'null' : $_POST['Banca'];
$instituicao = (empty($_POST['Instituicao']))? 'null' : $_POST['Instituicao'];
$cargo = (empty($_POST['Cargo']))? 'null' : $_POST['Cargo'];
$ano = (empty($_POST['Ano']))? 'null' : $_POST['Ano'];
$nivel = (empty($_POST['Nivel']))? 'null' : $_POST['Nivel'];
$sql_questao="SELECT * FROM tabela_questao WHERE id_disciplina = $disciplina OR id_banca = $banca OR id_ano = $ano OR id_nivel = $nivel OR id_instituicao = $instituicao OR id_cargo = $cargo";
$seleciona_questao = mysqli_query($connection,$sql_questao);
}
//////////////////////Questões//////////////////////////////////////////////
$sql_questao = "SELECT * FROM tabela_questao ORDER BY id_questao ASC";
$pega_questao = mysqli_query($connection, $sql_questao);
////////////////////////////////TRAZ AS Respostas DE ACORDO COM a questão/////
if(!empty($_POST['bt_enviar']))
{
$questao = (empty($_POST['Descricao']))? 'null' : $_POST['Descricao'];
$sql_resposta="SELECT * FROM tabela_resposta WHERE id_questao = $questao";
$seleciona_resposta = mysqli_query($connection,$sql_resposta);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Busca</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<span>Disciplina</span><br />
<select name="Disciplina">
<option value="" selected="selected">Selecione a disciplina</option>
<?php
if(mysqli_num_rows($pega_disciplina) == 0) {
echo '<option value="">Não foram encontradas disciplinas</option>';
}else{
while($linha = mysqli_fetch_array($pega_disciplina)){
echo '<option value="'.$linha['id_disciplina'].'">'.utf8_encode($linha['Disciplina']).'</option>';
}
}
?>
</select><br />
<span>Banca</span><br />
<select name="Banca">
<option value="" selected="selected">Selecione a banca</option>
<?php
if(mysqli_num_rows($pega_banca) == 0) {
echo '<option value="">Não foram encontradas bancas</option>';
}else{
while($linhaB = mysqli_fetch_array($pega_banca)){
echo '<option value="'.$linhaB['id_banca'].'">'.utf8_decode($linhaB['Banca']).'</option>';
}
}
?>
</select><br />
<span>Instituição</span><br />
<select name="Instituicao">
<option value="" selected="selected">Selecione a instituição</option>
<?php
if(mysqli_num_rows($pega_instituicao) == 0) {
echo '<option value="">Não foram encontradas instituições</option>';
}else{
while($linhaD = mysqli_fetch_array($pega_instituicao)){
echo '<option value="'.$linhaD['id_instituicao'].'">'.utf8_decode($linhaD['Instituicao']).'</option>';
}
}
?>
</select><br />
<span>Cargo</span><br />
<select name="Cargo">
<option value="" selected="selected">Selecione o cargo</option>
<?php
if(mysqli_num_rows($pega_cargo) == 0) {
echo '<option value="">Não foram encontrados cargos</option>';
}else{
while($linhaD = mysqli_fetch_array($pega_cargo)){
echo '<option value="'.$linhaD['id_cargo'].'">'.utf8_decode($linhaD['Cargo']).'</option>';
}
}
?>
</select><br />
<span>Nível</span><br />
<select name="Nivel">
<option value="" selected="selected">Selecione o nível</option>
<?php
if(mysqli_num_rows($pega_nivel) == 0) {
echo '<option value="">Não foram encontrados níveis</option>';
}else{
while($linhaC = mysqli_fetch_array($pega_nivel)){
echo '<option value="'.$linhaC['id_nivel'].'">'.utf8_decode($linhaC['Nivel']).'</option>';
}
}
?>
</select><br />
<span>Ano</span><br />
<select name="Ano">
<option value="" selected="selected">Selecione o Ano</option><br /><br />
<?php
if(mysqli_num_rows($pega_ano) == 0) {
echo '<option value="">Não foram encontrados</option>';
}else{
while($linhaB = mysqli_fetch_array($pega_ano)){
echo '<option value="'.$linhaB['id_ano'].'">'.utf8_decode($linhaB['Ano']).'</option>';
}
}
?>
<br /><br />
<input type="submit" name="bt_enviar" value="buscar" />
</form>
<hr />
<?php
Editado por acscarolinaif(!empty($_POST['bt_enviar']))
{
if(mysqli_num_rows($seleciona_questao) == 0)
{
echo '<h1>Desculpe, mas sua busca, não retornou resultados</h1>';
}
else
{
echo "<ul>";
while($linhaquestao = mysqli_fetch_array($seleciona_questao)){
echo '<li>'.utf8_decode($linhaquestao['Descricao']).'</li>';
}
echo "</ul>";
}
}
?>
<?php
if(!empty($_POST['bt_enviar']))
{
if(mysqli_num_rows($seleciona_resposta) == 0)
{
echo '<h1>Desculpe, mas sua busca, não retornou resultados</h1>';
}
else
{
echo "<ul>";
while($linharesposta = mysqli_fetch_array($seleciona_resposta)){
echo '<li>'.utf8_decode($linharesposta['Descricao']).'</li>';
}
echo "</ul>";
}}
?>
</body>
</html>
palavra errada
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.