Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos estou com uma grande dúvida para a resolução de um mecanismo simples de busca.
O mecanismo de busca visa encontrar clientes através do NOME_FANTASIA ou TELEFONE
Tenho um formulário com o campo:
<input name="palavra" type="text" id="palavra" size="28">
<input type="submit" name="Submit" value="BUSCAR">
Gostaria que essa busca fosse encontrar o resultado daqueles clientes que estivesem apenas com o STATUS='Ativado'.
O Problema é que mesmo o clientes com o STATUS='Desativado' acaba aparecendo nos resultados da busca.
Aqui está:
$sql = "SELECT * FROM anuncios WHERE STATUS='Ativado' AND NOME_FANTASIA like '%$palavra%' OR TELEFONE like '%$palavra%' ORDER BY NOME_FANTASIA";
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
A mensagem de erro é: Não foi possível realizar a consulta ao banco de dados
Desde já agradeço a ajuda dos amigos do forum.
Atenciosamente,
Alex Dias
Olá Willian, isso mesmo estão todos em MAIÚCULO as tabelas do MySQL.
A busca funciona perfeitamente do jeito que tá, mas quando eu insiro o comando WHERE STATUS='Ativado'´ou WHERE STATUS='Desativado' dá erro!
Atenciosamente,
Alex Dias
Ae mlk,
Não sei se vai ajudar mas ja tive um problema desse e eu so alterei a ordem da consulta tá ligado?
Tipo:
$sql = "SELECT * FROM anuncios WHERE NOME_FANTASIA LIKE '%$palavra%' OR TELEFONE LIKE '%$palavra%' AND STATUS='Ativado' ORDER BY NOME_FANTASIA";
E vey, bota esse campos ae em minusculo, assim fica muito poluído teu código, na moral...
falo
Coloca o mysql_error() para vermos ONDE é o erro.
e dá um echo na query tb...
O problema eh de logica...
seguinte...
Os operadores E (no caso, and) tem precedencia em relacao aos operadores OU (or)...
No caso, você tah pesquisando onde (o status eh ativo E nome de fantasia = nome_fantasia) ou telefone igual a tal...
Eu nunca tentei, mas faça o seguinte.. nao tenho ctza se funciona:
$sql = "SELECT * FROM anuncios WHERE (NOME_FANTASIA like '%$palavra%' OR TELEFONE like '%$palavra%') AND STATUS='Ativado' ORDER BY NOME_FANTASIA";
assim você separa a primeira condiçao da segunda...
P.S.: e olha que eu matei a aula de logica na facul hj xD...
>
Ae mlk,
Não sei se vai ajudar mas ja tive um problema desse e eu so alterei a ordem da consulta tá ligado?
Tipo:
$sql = "SELECT * FROM anuncios WHERE NOME_FANTASIA LIKE '%$palavra%' OR TELEFONE LIKE '%$palavra%' AND STATUS='Ativado' ORDER BY NOME_FANTASIA";
E vey, bota esse campos ae em minusculo, assim fica muito poluído teu código, na moral...
falo
Olá amigo Red Fenix, problema solucionado, muitíssimo obrigado. Essa era a solução! Valeu...
>
O problema eh de logica...
seguinte...
Os operadores E (no caso, and) tem precedencia em relacao aos operadores OU (or)...
No caso, você tah pesquisando onde (o status eh ativo E nome de fantasia = nome_fantasia) ou telefone igual a tal...
Eu nunca tentei, mas faça o seguinte.. nao tenho ctza se funciona:
$sql = "SELECT * FROM anuncios WHERE (NOME_FANTASIA like '%$palavra%' OR TELEFONE like '%$palavra%') AND STATUS='Ativado' ORDER BY NOME_FANTASIA";
assim você separa a primeira condiçao da segunda...
P.S.: e olha que eu matei a aula de logica na facul hj xD...
Olá amigo Rick.hjpbarcelos, tentei a sua solução e o problema também foi solucionado, muitíssimo obrigado.
Os teus campos da tabela, estão assim em maiúsculo mesmo?
isso ai é um erro tratado.. vamos ver a real..
...
$resultado = mysql_query( $sql )or die( mysql_error() );