PHP - problemas filtro no MySQL[RESOLVIDO]

4 respostas
jsnpereira

Olá pessoal!

No váris campo do formulario da php que irá consultar no query, por exemplo no campo deve ser código, titulo e autor. Escolhe alguns campo que usuário deve digitar em opcional e irá no filtro no where para retornar as linhas. por exemplo que estou tentando usar query , veja em baixo

$sql =
   "select t.idtitulo idtitulo,\n"
   . "t.TITULO titulo,\n"
   . "t.EDITORA editora,t.AUTOR autor,t.ANO ano,\n"
   . "case \n"
   . "when tc.idcliente is not null then 1\n"
   . "else 0\n"
   . "end \n"
   . "as estados\n"
   . "from titulo t\n"
   . "left outer join titulo_cliente tc\n"
   . "on t.idtitulo = tc.idtitulo\n"     
   . "where (t.IDTITULO = ".$codigo." or ".$codigo." is NULL)\n "
   ." and (t.titulo like %".$titulo."% or ".$titulo." is NULL)";

Veja ai esse código

(t.IDTITULO = ".$codigo." or ".$codigo." is NULL)

Para verificar se váriavel $codigo está null e torna o verdadeiro para não deixar sem retornar as linhas. por que usuário digitou outro campo por exemplo digitou o campo de titulo vai inserir um valor no variavel $titulo e outro deixou o campo $codigo está vazio, torna as linhas da tela. Mas tentei várias vezes mas não retornou nenhum que foi testando aqui. Só retornou quando dois campos digitado. não retorna por um campo vazio.

Espero que me ajuda. obrigado!!

4 Respostas

rafadelnero

Jsnpereira, tente printar a variável $sql e execute no seu banco de dados pra ver se o comando funciona, se não funcionar, verifique que parte do código está errado.

Jhonny_Oliveira

Normalmente eu construo as queries nos meus programas a partir dos filtros dos usuários, criar uma query estática que funcione desse jeito é mais difícil e nem sempre funciona corretamente.

Segue apenas uma sugestão, não testei. Claro que não segue nenhuma regra de segurança e a lógica não é perfeita, mas dá para começar a trabalhar em cima disso.

<?php 
	$sql = "select codigo, titulo from livros where 1 = 1 ";
	
	if (isset($codigo)) {
		$sql += " and codigo = {$codigo}";
	}
	
	if (isset($titulo))
	{
		
		$sql += " and titulo like '%{$titulo}%'"; 
	}
	
?>

Espero ter ajudado.

perdeu

da uma olhada nesse topico a duvida é semelhante.

jsnpereira

perdeu:
da uma olhada nesse topico a duvida é semelhante.
http://forum.imasters.com.br/topic/480693-como-posso-resolver-isso-php-mysql/

Obrigado! me passou um link, seria interessante… mas ontem mais tarde e já resolvido a problemas e funcionou corretamente. é diferente esse que vc mandou, seria conhecer a experiencia cada logica diferente… Valeu!!

Criado 26 de novembro de 2012
Ultima resposta 27 de nov. de 2012
Respostas 4
Participantes 4