Ir para conteúdo

POWERED BY:

Arquivado

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

ANGELA.BRANCO

[RESOLVIDO] Busca com vários campos

Recommended Posts

Bom dia pessoal to tentando montar a seguinte buscaNOME :EMPRESA:EMAIL:TELEFONE:OBS:A pessoa pode digita só apenas um ou todos ou só dois etc... e retornar do banco a consulta a minha query é a seguinte"SELECT * FROM contatos WHERE nome = '$nome' AND empresa = '$empresa' AND email = '$email' AND telefone = '$telefone' AND obs = '$obs' LIKE '%$nome%,%$empresa%,%$email%,%$telefone%,%$obs%'";o que ah de errado?obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta fazer desta forma"SELECT nome,empresa,email,telefone,obs FROM contatos WHERE nome LIKE '%$nome% and empresa like %$empresa% and email like %$email% and telefone like %$telefone% and obs like %$obs%'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem o grande problema de qdo eu faço assim é que ele ve se tem todas as opções iguais no banco e me retorna a variavel $total como zero, logo ele me retorna que "Nenhum resultado encontrado na pesquisa para Busca", preciso que ele traga o que estiver em todas as consultas tipo nome: angela empresa: Annis :: Mesmo que na empresa Annis não tenha angela, ele me traga os registros que tem a referencia de busca:Angela e Annis.

 

$sql = mysql_query("SELECT nome,empresa,email,telefone,obs FROM contatos WHERE nome LIKE '%$nome% and empresa like %$empresa% and email like %$email% and telefone like %$telefone% and obs like %$obs%'");		   		   $total = mysql_num_rows($sql);		   if($total==1) $res = "resultado";		   else $res = "resultados";

Compartilhar este post


Link para o post
Compartilhar em outros sites

então você pode usar o (ou)(||) ao enves de usar o (e)(AND);pq assim ele ta comprando todos os campos.se todos os campos forem verdadeiros.ele trazse não ele não retorna nada. entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim e não deu certoSELECT nome,empresa,email,telefone,obs FROM contatos WHERE nome LIKE '%$nome% || empresa like %$empresa% || email like %$email% || telefone like %$telefone% || obs like %$obs%";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preste atenção nas aspas simples... deve seguir o exemplo:

nome LIKE '%$nome%'

Acho q deve ser AND mesmo... pq você já ta usando LIKE... se usar or vai pegar sempre todos os registros se um dos campos ficar em branco, enquanto o AND vai filtrar apenas os preenchidos pq os q ficarem em branco vai passar LIKE '%%' pra query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal coloquei um combo para qdo for E e quando for or e ficou assim:

 

if ($combo=='E'){		   $sql= mysql_query("SELECT * FROM contatos WHERE nome LIKE '%$nome%' and empresa like '%$empresa%' AND email like '%$email%' AND telefone like '%$telefone%' AND obs like '%$obs%'");		   }		   else {		   $sql= mysql_query("SELECT * FROM contatos WHERE nome LIKE '%$nome%' || empresa like '%$empresa%' || email like '%$email%' || telefone like '%$telefone%' || obs like '%$obs%'");		   }

 

 

O problema é que qdo é OR(||) e alguem escolhe uma das 5 opções em branco ele traz tudo que está em branco na tabela, preciso que a query ignore o branco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte Angela, como voce esta precisando fazer uma busca de varios campos e não necessariamente todos os campos estarao preenchidos, você vai precisar checar qual deles esta preenchido e adicionar no select + ou - assim:

 

<?php$sql = "SELECT * from XXX";$condicoes = array();if(!empty($_POST['nome'])) {$condicoes [] = "nome like '%$_POST['nome'] %'";}if(!empty($_POST['email'])) {$condicoes[] = email = '$_POST['nome'] '";}if(count($condicoes)) {$sql = "WHERE ". join(' AND ', $condicoes);}$rs = mysql_query($sql);?>

A grosso modo é idéia é essa. Espero ter ajudado.

 

[]'s

 

Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu script esta assim?

 

<?php		   if(file_exists("init.php")) {		   require "init.php";		   } else {		   echo "Arquivo init.php nao foi encontrado";		   exit;		   }		   if(!function_exists("Abre_Conexao")) {		   echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";		   exit;		   }		   Abre_Conexao();		   		   	$sql = "SELECT * from contatos";			$condicoes = array();						if(!empty($_POST['nome'])) {						$condicoes [] = "nome like '%$_POST['nome'] %'";						}						if(!empty($_POST['empresa'])) {						$condicoes [] = empresa = '$_POST['empresa'] ';						}						if(!empty($_POST['email'])) {						$condicoes [] = email = '$_POST['email'] ';						}			if(!empty($_POST['telefonecom'])) {						$condicoes [] = telefone = '$_POST['telefone'] ';						}						if(!empty($_POST['obs'])) {						$condicoes [] = obs = '$_POST['obs'] ';						}						if(count($condicoes)) {						$combo = $_POST["opcao"];		   			if ($combo=='E'){						$sql = "WHERE ". join(' AND ', $condicoes);			}			else {			$sql = "WHERE ". join(' || ', $condicoes);			}			}						$rs = mysql_query($sql);		   		   $total = mysql_num_rows($rs);		   if($total==1) $res = "resultado";		   else $res = "resultados";		   if($total==0) {		   echo "<b>Nenhum</b> resultado encontrado na pesquisa para Busca</b>";		   }			if(mysql_errno() != 0) {			if(!isset($erros)) {			echo "Erro o arquivo init.php foi auterado, nao existe $erros";			exit;			}			echo $erros[mysql_errno()];			exit;			}			while($l = mysql_fetch_array($rs)) {			$id		   = $l["id_usuario"];			$nome		 = $l["nome"];			$empresa	  = $l["empresa"];			$data		 = implode("/", array_reverse(explode("-", $l["data_nascimento"])));			$logradouro   = $l["logradouro"];			$endereco	 = $l["endereco"];			$numero1	  = $l["numero1"];			$complemento1 = $l["complemento1"];			$bairro	   = $l["bairro"];			$cidade	   = $l["cidade"];			$uf		   = $l["uf"];			$cep1		 = $l["cep1"];			$ddd1		 = $l["ddd1"];			$telefone	 = $l["telefone"];			$dddcom1	  = $l["dddcom1"];			$telefonecom  = $l["telefonecom"];			$dddcom2	  = $l["dddcom2"];			$telefonecom2 = $l["telefonecom2"];			$dddcel1	  = $l["dddcel1"];			$celular	  = $l["celular"];			$dddcel2	  = $l["dddcel2"];			$celular2	 = $l["celular2"];			$email		= $l["email"];			$jornal	   = $l["jornal"];			$aniver	   = $l["aniver"];			$natal		= $l["natal"];			$obs		  = $l["obs"];			?>			<table width="100%" border="0" cellpadding="5" cellspacing="1">			<col /><col width="45%" /><col width="45%" /><col width="10%"/>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#D8D8D8"><?php if(@$_GET["open"] != "1"){?><a href="java script:;" onClick="openComent('<?php echo $id?>')"><img id="img<?php echo $id?>" src="/images/btMais.gif" alt="" border="0" /></a><?php } else {?><img id="img<?php echo $id?>" src="/images/dot.gif" alt="" border="0" width="9"/><?php }?></td>				<td bgcolor="#D8D8D8"><?php echo"$nome"?></td>				<td bgcolor="#D8D8D8"><?php echo"$empresa"?></td>				<td align="right" bgcolor="#D8D8D8"><a href="editar.php?id=<?php echo $id?>"><img src="/images/btEdit.gif" alt="Editar" hspace="3" border="0" title="Editar"/></a><a href="java script:;" onClick="excluir('<?php echo $id?>')"><img src="/images/btExcluir.gif" alt="Excluir" hspace="3" border="0" title="Excluir"/></a></td>			  </tr>			</table>			<table width="100%" border="0" cellpadding="3" cellspacing="1" id="<?php echo $id?>" <?php if(@$_GET["open"] != "1"){?>style="display:none<?php }?>">			<col width="25%"><col width="25%"><col width="25%"><col width="25%">			  <tr bgcolor="#FFFFFF">				<td colspan="2" bgcolor="#E4E4E4"><b>E-mail: </b></td>				<td bgcolor="#E4E4E4"><b>Data Nascimento: </b></td>				<td bgcolor="#E4E4E4"><b>Telefone Residencial :</b></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td colspan="2" bgcolor="#F0F0F0"><?php echo"$email"?> </td>				<td bgcolor="#F0F0F0"><?php if ($data=="00/00/0000"){											echo "";											}											else{											echo "$data";											} ?></td>				<td bgcolor="#F0F0F0"><?php echo"$ddd1 $telefone"?></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#E4E4E4"><b>Telefone Comercial - 1:</b></td>				<td bgcolor="#E4E4E4"><b>Telefone Comercial - 2:</b></td>				<td bgcolor="#E4E4E4"><b>Celular - 1: </b></td>				<td bgcolor="#E4E4E4"><b>Celular - 2: </b></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0"><?php echo"$dddcom1 $telefonecom"?></td>				<td bgcolor="#F0F0F0"><?php echo"$dddcom2 $telefonecom2"?></td>				<td bgcolor="#F0F0F0"><?php echo"$dddcel1 $celular"?></td>				<td bgcolor="#F0F0F0"><?php echo"$dddcel2 $celular2"?> </td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#E4E4E4"><b>Logradouro:</b></td>				<td bgcolor="#E4E4E4"><b>Endereço: </b></td>				<td bgcolor="#E4E4E4"><b>Número:</b></td>				<td bgcolor="#E4E4E4"><b>Complemento:</b></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0"><?php echo"$logradouro"?></td>				<td bgcolor="#F0F0F0"><?php echo"$endereco"?></td>				<td bgcolor="#F0F0F0"><?php echo"$numero1"?></td>				<td bgcolor="#F0F0F0"><?php echo"$complemento1"?></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#E4E4E4"><b>Bairro: </b></td>				<td bgcolor="#E4E4E4"><b>Cidade: </b></td>				<td bgcolor="#E4E4E4"><b>Estado:</b></td>				<td bgcolor="#E4E4E4"><b>CEP: </b></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0"><?php echo"$bairro"?></td>				<td bgcolor="#F0F0F0"><?php echo"$cidade"?></td>				<td bgcolor="#F0F0F0"><?php echo"$uf"?></td>				<td bgcolor="#F0F0F0"><?php echo"$cep1"?></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#E4E4E4"><b>Cartão de Aniversário: </b></td>				<td bgcolor="#E4E4E4"><b>Cartão de Natal:</b></td>				<td bgcolor="#E4E4E4"><b>Recebe Jornal: </b></td>				<td bgcolor="#E4E4E4"><b></b></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0"><?php if($aniver == 1){ echo 'Sim';} else { echo 'Não';} ?></td>				<td bgcolor="#F0F0F0"><?php if($natal  == 1){ echo 'Sim';} else { echo 'Não';} ?></td>				<td bgcolor="#F0F0F0"><?php if($jornal == 1){ echo 'Sim';} else { echo 'Não';} ?></td>				<td bgcolor="#F0F0F0"></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0" colspan="4" bdcolor="#F0F0F0"><b>Observações:</b></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0" colspan="4"><textarea bgcolor="#F0F0F0" disabled name="obs" style="width:100%" rows="4" ><?php echo "$obs" ?></textarea></td>			  </tr>			  <tr bgcolor="#FFFFFF">				<td bgcolor="#F0F0F0" colspan="4"> </td>			  </tr>			</table>		  <?php			}			@mysql_close();			?></td>

Desculpa tanta postagem é que não consigo fazer funcionar e é para entragar hj snif snif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Angela, você não precisa usar OR.... como eu disse o like já faz essa função de OR.

 

Imagine que você tem um registro

Nome Empresa Email

José Petrobrás jose@petrobras.com.br

 

Se alguem procurar

Nome: José

Email: petrobras.com.br

 

Vai encontrar apenas ele... pois na query terá AND empresa LIKE '%%'

 

o AND vincula o LIKE '%%' com os registros q tenha nome josé e email petrobras.com.br

 

Se você usar apenas o AND funciona perfeitamente, nao precisa ficar vendo se tem campo em branco.

 

Se nao funcionar...o q você pode fazer tb é filtrar sua query... por exemplo:

 

$query = "SELECT * FROM contatos WHERE nome LIKE '%$nome%' and empresa like '%$empresa%' AND email like '%$email%' AND telefone like '%$telefone%' AND obs like '%$obs%'";$query = str_replace("like '%%'","!= '#'",$query);$sql = mysql_query($query);

É na base da gambi mas economiza linhas e funciona normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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