Publicidade

Patrocínio:

Bom dia Pessoal

 

Estou desenvolvendo um sistema de busca onde existem 2 checkboxs (Presencial e EAD). Segue abaixo o formulário:

<form id="pesquisa-modal" action="resultado_bolsa.php" method="post">
				
				<div class="grid-8">
					<select class="select" name="categoria">
							<option value="P&oacute;s-Gradua&ccedil;&atilde;o">P&oacute;s-Gradua&ccedil;&atilde;o</option>
					</select>
				</div>
				<div class="grid-8">
					<select class="select" name="curso">
						<option value="">Curso:</option>
							<?php
// Instancia o objeto PDO
							$pdo = new PDO('mysql:host=localhost;dbname=bolsascursos', 'root', '');
							$consulta = $pdo->query("SELECT * FROM cursos;");
							while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) {
								$nome_curso = $linha['nome'];
								$curso_id = $linha['id'];
							?>
							    <option value="<?php echo $nome_curso ?>"><?php echo $nome_curso ?></option>
							<?php
							}
							?>
							?>
					</select>
				</div>
				<div class="grid-8">
					<select class="select" name="cidade">
						<option value="">Cidade:</option>
							<?php
// Instancia o objeto PDO
							$pdo = new PDO('mysql:host=localhost;dbname=bolsascursos', 'root', '');
							$consulta = $pdo->query("SELECT * FROM cidade;");
							while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) {
								$nome_cidade = $linha['nome'];
								$cidade_id = $linha['id'];
							?>
							    <option value="<?php echo $nome_cidade ?>"><?php echo $nome_cidade ?></option>
							<?php
							}
							?>
							?>
					</select>
				</div>
				
				<div class="grid-8">
					<div class="selectdiv">
						<input type="checkbox" checked class="check" name="tipo_curso" value="Presencial">Presencial <input type="checkbox" class="check" name="tipo_curso" value="EAD">EAD-Ensino a Distancia
					</div>
				</div>
			
				<div class="grid-8">
				<br>
					<button type="submit">BUSCAR BOLSAS</button>
				</div>
			</form>

O sistema está funcionando perfeitamente, me retorna os valores. Mas se o usuário marcar as 2 opções (Presencial e EAD) ele só retorna os valores do EAD. Mas se marcar somente Presencial ou somente EAD ele retorna os valores corretos. O  problema é quando marca os 2.
Abaixo o código que recebe os valores.
 

<?php

$curso = $_POST['curso'];
$categoria = $_POST['categoria']; 
$cidade = $_POST['cidade'];
$tipo_curso = $_POST['tipo_curso'];

$busca_query = "SELECT bolsas.*,  instituicoes.foto as img_instituicao, instituicoes.nome as instituicao, cursos.nome as curso, cidade.nome as cidade, categorias.nome as categoria, turno.turno as turno from bolsas 
				INNER JOIN cursos ON bolsas.id_curso = cursos.id
				INNER JOIN cidade ON bolsas.id_cidade = cidade.id
				INNER JOIN turno ON bolsas.id_turno = turno.id
				INNER JOIN instituicoes ON bolsas.id_instituicao = instituicoes.id
				INNER JOIN categorias ON bolsas.id_categoria = categorias.id WHERE bolsas.id_curso LIKE '%$curso%' AND bolsas.tipo_curso = '$tipo_curso' AND bolsas.id_categoria = '$categoria' AND bolsas.id_cidade = '$cidade'";

try {
			$result = $conexao->prepare($busca_query);
			$result->execute();
			$contar = $result->rowCount();
			if($contar>0) {
				while($dados = $result->FETCH(PDO::FETCH_OBJ)) {
?>

<div id="mostrar-bolsas" class="grid-16" style="margin-bottom: 20px">
				<div class="grid-5"><img src="img/<?php echo $dados->img_instituicao; ?>" style="max-width: 175px; width: auto;"></div>
				<div class="grid-6" style="margin-top: 30px;">
					<h3><?php echo $dados->curso; ?></h3>
					<h4><?php echo $dados->instituicao; ?> - <?php echo $dados->cidade; ?></h4>
					<h5><?php echo $dados->categoria; ?> | <?php echo $dados->tipo_curso; ?> | <?php echo $dados->turno; ?></h5>
                  
                  ....

Alguém sabe o que é?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o usuário só pode escolher um ou outro, então troque de checkbox para radio:

<input type="radio" name="tipo_curso" value="Presencial">Presencial 
<input type="radio" name="tipo_curso" value="EAD">EAD

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade ele pode escolher os 2 .. o problema é que quando ele escolhe os 2 o resultado só vem pra EAD.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então é usar names diferentes, coloque por exemplo:

tipo_curso_presencial e o outro com tipo_curso_ead

E pegue da mesma forma no PHP
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim .. mas essas duas opção de Presencial e EAD se encontram na mesma coluna (tipo_curso) que fica na tabela bolsas.

To confuso nessa parte:

WHERE bolsas.id_curso LIKE '%$curso%' AND bolsas.tipo_curso = '$tipo_curso' AND bolsas.id_categoria = '$categoria' AND bolsas.id_cidade = '$cidade'";

Como ficaria se eu colocasse 2 names diferentes? Já que as 2 opções se encontram na mesma coluna.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou colocar dessa maneira no sql?

 bolsa.tipo_curso IN ('$tipo_curso')

Faz um teste assim...

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eh um checkbox para a mesma informacao e ambas precisam ser enviadas, tem que estar no formato de array:

<input type="radio" name="tipo_curso[]" value="Presencial">Presencial 
<input type="radio" name="tipo_curso[]" value="EAD">EAD

Veja os colchetes no atributo name

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 2017-5-19 at 08:47, Latorre disse:

Já tentou colocar dessa maneira no sql?


 bolsa.tipo_curso IN ('$tipo_curso')

Faz um teste assim...

 

Sim .. e retorna só o valor da última opção marcada .. que é EAD

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 2017-5-19 at 11:53, hufersil disse:

Se eh um checkbox para a mesma informacao e ambas precisam ser enviadas, tem que estar no formato de array:


<input type="radio" name="tipo_curso[]" value="Presencial">Presencial 
<input type="radio" name="tipo_curso[]" value="EAD">EAD

Veja os colchetes no atributo name

 

Entendi .. mas e na página de resultados, como ficaria? Pois quando coloco colchetes e não altero a página de resultados da erro.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente utilizar 2 names diferentes como o EdCesar mencionou e, caso o usuário selecionar as duas opções, concatene as duas opções dentro de tipo_curso. Caso você precise recuperar esse valores dentro de tipo_curso e mostrar pro usuário por exemplo, utilize o explode() e pega os 2 valores que estarão armazenados separadamente para você fazer o que quiser com eles.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos

  • Conteúdo Similar

    • Por Seu3uceta will back
      Boa tarde!!
       
      Estou fazendo um Site para a Instituição em que trabalho e preciso fazer um sistema de busca interna. Estou utilizando o ASP.Net. Alguém pode me dar uma luz de como fazer?
       
      Valeu!!
    • Por brunosensatto
      Boa noite Pessoal.
      Sou iniciante em PHP e estou quebrando a cabeça com um projeto. Mas vamos lá!
       
      Eu tenho uma tabela chamada INSTITUIÇÕES e outra tabela chama BOLSAS_ESTUDOS. Dentro do formulário onde vou cadastrar a bolsa de estudos eu faço uma consulta na tabela INSTITUIÇÕES. Veja o código:
      <select class="form-control1" name="instituicao"> <option value="">Selecione ...</option> <?php $pdo = new PDO('mysql:host=localhost;dbname=bolsascursos', 'root', ''); $consulta = $pdo->query("SELECT id, nome FROM instituicoes;"); while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $linha['id'] ?>"><?php echo $linha['nome'] ?></option> <?php } ?> ?> </select> E gravo dentro da tabela BOLSAS_ESTUDOS na coluna id_instituicao.
      Na parte administrativa quando vou listar as bolsas de estudos cadastrados eu queria listar o nome e imagem da instituição referente ao ID cadastrado. Como faço ?
    • Por brunosensatto
      Boa tarde pessoal.
      Sou iniciante em PHP e estou desenvolvendo um sistema de bolsas de estudos. Estou com dificuldade na seguinte questão.
       
      Tenho a tabela Bolsas onde as bolsas de estudos são cadastradas e tenho outras tabelas como cidade, cursos, instituição, etc. No formulário de cadastro da Bolsa, nas opções cidade, cursos instituição... eu faço uma consulta no Banco de Dados e retorno os valores num ComboBox. 
       
      <select class="form-control1" name="curso"> <option value="">Selecione ...</option> <?php // Instancia o objeto PDO $pdo = new PDO('mysql:host=localhost;dbname=bolsascursos', 'root', ''); $consulta = $pdo->query("SELECT id, nome FROM cursos;"); while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)) { ?> <option value="<?php echo $linha['id'] ?>"><?php echo $linha['nome'] ?></option> <?php } ?> ?> </select> O exemplo acima ele insere o id capturado dentro da tabela Bolsas na coluna id_bolsa.
       
      Abaixo ta o código usado pra listar as Bolsas Cadastradas.
      <?php $select = "SELECT * from bolsas ORDER BY id DESC"; try { $result = $conexao->prepare($select); $result->execute(); $contar = $result->rowCount(); if($contar>0) { while($mostrar = $result->FETCH(PDO::FETCH_OBJ)) { ?> <?php echo $mostrar->curso;?> <?php echo $mostrar->categoria;?> <?php echo $mostrar->id_curso;?> .... <?php } } else { echo 'Não existem instituições cadastradas!'; } }catch(PDOException $e) { echo $e; } ?>  
      Minha dúvida é a seguinte: Como faço para que ao invés de amostrar o ID do curso, amostrar o Nome do Curso ?
      Eu li sobre INNER JOIN mas não consegui fazer nada que desse certo ...
    • Por mekker
      Estou tentando fazer uma consulta de usuário do banco de dados, porém ele não me trás o resultado alguém pode me ajudar?



      <form name="enter" method="post" action="" enctype="multipart/form-data">
      Inserir código: <input type="text" name="pesquisa" />
      <input type="submit" name="mandar" value="Buscar" />
      </form>


      <?
      if(isset($_POST['mandar'])){

      $pesquisa = $_POST['login'];
      $sql = "SELECT * FROM usuario WHERE login LIKE'%pesquisa%'";

      $limite = mysql_query("$sql");
      while ($sql = mysql_fetch_array ($limite) ) {
    • Por ryuunosuke
      Bem preciso fazer um busca por ID e cada ID pode ter ate 3 resultados. Ou seja pode ter 3 linhas com o mesmo ID.
       
      No $id_idx tem o id da conta logada. E preciso dos campos abaixo de cada linha.
      $sql = mysql_query("SELECT name, type, mod FROM Dados WHERE id_idx = '$id_idx'"); Nao consegui pensar em nada depois disso. :unsure:
      Mas como faço para prosseguir e obter de 0 a 3 resultados diferentes?