Ir para conteúdo

POWERED BY:

Arquivado

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

Leandromx

Consulta de Produto não está filtrando correto

Recommended Posts

Bom dia Pessoal,

 

Seguinte, estou fazendo asssim....

Listando os produtos que estão com status liberado.

E na mesma query uso para fazer buscar através de um POST (ops através do GET hehe)

 

"SELECT * FROM produtos WHERE nome LIKE '%".$_GET['busca']."%' OR cod LIKE '%".$_GET['busca']."%' AND status='liberado' ORDER BY nome ASC

O único problema é que está trazendo os produtos que estão com Liberado e Bloqueado não está filtrando só os liberados...

 

Se eu tirar o LIKE e deixar somente WHERE status='liberado' ele funciona...

Alguma solução para isso? nunca aconteceu comigo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente:

 

"SELECT * FROM produtos WHERE nome LIKE '%{$_GET['busca']}%' OR cod LIKE '%{$_GET['busca']}%' AND status='liberado' ORDER BY nome ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho ainda aparecer os bloqueados...

Só seu tirar o LIKE e deixar o status='liberado' ai dar certo.. a impressão que dá é um conflito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código esta com VARCHAR porque código pode ser número ou letra eu fiz assim..

a pessoa procurar pelo nome ou código do produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Alaerte é aqui que acho estranho...

Porque é listado todos os produtos normalmente...

 

Sem nenhum erro... a única condição que eu preciso é que apareça somente os produtos que estão com status='liberado'

 

saca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leandro, você quer que apareça os dados de acordo o que foi selecionado em algum link correto ? de onde vem esse $_GET['busca'] ? você não está confundindo não ? não seria $_POST ?

 

veja, fiz um script aqui e funcionou perfeitamente:

 

tabela:

[b]busca[/b]

cod = 1
nome = alaerte
dados= teste
status=liberado

-----------------
cod=2
nome=gabriel
dados=teste2
status=off

script:

 

if(isset($_GET['nome'])){

	 $b=mysql_query("SELECT * FROM busca WHERE nome LIKE '%{$_GET['nome']}%' OR cod LIKE '%{$_GET['nome']}%' AND status='liberado'")or die(mysql_error($con));
	 while($v=mysql_fetch_array($b)){
		 print $v[0];
		 print $v[1];
		 print $v[2];
	 }
	 }else{
	 print '<a href="?nome=1">Exibir dados pelo cod</a>';
	 print '<a href="?nome=alaerte">Exibir dados pelo nome</a>'
	 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então lá em cima eu tinha colocado POST mas depois editei o topico para GET( que é o correto agora)

Então é assim deixa eu ver se consigo explicar...

 

Resolvendo um problema o resto eu mato tudo...

vamos esquecer tudo isso que conversarmos acima...

Meu sistema funciona normal, só preciso que ele não mostra os produtos que estão com status bloqueado ( e isso não está fazendo )

 

é assim:

Eu tenho um campo busca que irá para a página busca.php method GET

 

<form id="form1" name="form1" method="get" action="busca.php">
	  <div style="float:left; width:150px;margin-top:5px">
		<input name="busca" type="text" id="busca" size="18" value="Nome ou codigo do produto" onClick="this.value=''" />
		</div>
			   <div style="float:left;margin-left:5px; width:30px;height:21px;margin-top:6px">
		 
		<input type="image" src="imgs/bt_ok.jpg" name="button" id="bt_busca" />
	  </div>
	</form>

Ai na página busca.php coloquei a query que você passou

 

mysql_select_db($database_rsCon, $rsCon);
 $query_rsListaProdutos = "SELECT * FROM produtos WHERE nome LIKE '%{$_GET['busca']}%' OR cod LIKE '%{$_GET['busca']}%' AND status='liberado' ORDER BY nome ASC";

 

Ao fazer a busca ele me trás todos os produtos da busca.... Até OS PRODUTO QUE ESTÃO COM STATUS BLOQUEADOS.

 

A única coisa que eu preciso é que não me mostre os produtos com Status Bloqueados..

 

Mesmo eu usando isso daqui

AND status='liberado'

Ele ME MOSTRA OS PRODUTOS BLOQUEADOS.

 

Se eu usar minha query assim

 

$query_rsListaProdutos = "SELECT * FROM produtos WHERE  status='liberado' ORDER BY nome ASC";

Ai sim ele funciona só aparecerá os produtos LIBERADOS

 

mas se eu usar junto com LIKE parace que o sistema não lê AND status='liberado'

 

Esse é meu problema...Ele está mostrando TUDO LIBERADO E BLOQUEADO

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais ai é que ta, eu testei aqui igual o seu sistema, e só me mostrou os que estão como liberado... o registro que está como OFF que é o segundo não me aparece...

 

é realmente estranho, posta aqui a screen de algum registro visualizando pelo phpmyadmin pra eu ver uma cosa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos fazer o seguinte, troque o campo status para ENUM e os valores '1','2' 1 = liberado 2 = bloqueado

além do mais como numérico processa mais rápido...

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.