Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brunosensatto

Consulta com Checkbox

Recommended Posts

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 é?

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

 

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.

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

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

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.

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por gabrielmele
      Boa tarde a todos,

      Estou tentando trazer todos os resultados no listview do meu sistema, porem só vem um registro.

      Ex.: Tudo que comece com a palavra "azul" trazer no listview
       
    • Por lucianfpaula
      Olá meu amigo, sou novo em php e desde já sou muito grato pela ajuda.
      Eu estou desenvolvendo um formulário de cadastro e gostaria de ter uma verificação se o cadastro tal já existe em uma tabela quando a pessoa muda o foco do input do tipo text. exemplo: a pessoa digita o email e quando ela muda para outro campo a formulário informa a ela que o email já esta cadastrado.
    • Por Brand00wn
      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 ...
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.