Ir para conteúdo

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

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


  • Conteúdo Similar

    • 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 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) ) {
×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: