Jump to content
Fórum Script Brasil
  • 0

Dúvida Query


Ronierick
 Share

Question

Pessoal, boa tarde.

Essa é minha primeira postagem aqui no forum, hehehe...

Bem, tenho um sistema de consultas em uma base com banco de dados MYSQL.

O formulário que o usuário submete possui vários campos, só darei o exemplo de 3 campos: Data, UF, Status

Segue minha query:

$result = mysql_query("SELECT * FROM dados where cha_data_criacao like'%09/08/2012%' or est_uf='sp' or status='aberto'");

O meu problema é que o usuário pode selecionar todos os 3 campos, a query vai funcionar perfeitamente e retornar os resultados desejados, mas o usuário pode também, apenas selecionar o campo Data e o campo Status com isso a query não funciona por que o campo de UF estará vazio...Se o usuário consultar só um campo e deixar os outros dois em branco, erro também! Ou seja, a quer só sai perfeita se ele selecionar todos os campos.

Gostaria de que a consulta fosse 100% personalizada, com os campos que o usuário desejar!! Como posso fazer isso?? Obrigado!!

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0
para funcionar em branco todos tem de ser LIKE se você por campo = quer dizer que tem que ter naqule campo algo IGUAL ao que foi solicitado sendo assim troce tudo por LIKE e faça o teste.

me desculpe, fiquei um pouco confuso na sua explicação, poderia me dar um exemplo?

Link to comment
Share on other sites

  • 0

o seu próprio código é um exemplo

olha só..

$result = mysql_query("SELECT * FROM dados where cha_data_criacao like'%09/08/2012%' or est_uf='sp' or status='aberto'");

o sinal de = (igual) força uma obrigatoriedade.

utilize o like como foi fito no campo cha_data_criacao.

ficando assim.

$result = mysql_query("SELECT * FROM dados where cha_data_criacao like'%09/08/2012%' or est_uf like '%sp%' or status like '%aberto%'");

Link to comment
Share on other sites

  • 0
o seu próprio código é um exemplo

olha só..

$result = mysql_query("SELECT * FROM dados where cha_data_criacao like'%09/08/2012%' or est_uf='sp' or status='aberto'");

o sinal de = (igual) força uma obrigatoriedade.

utilize o like como foi fito no campo cha_data_criacao.

ficando assim.

$result = mysql_query("SELECT * FROM dados where cha_data_criacao like'%09/08/2012%' or est_uf like '%sp%' or status like '%aberto%'");
Humm, obrigado!! Mas não funcinou... Eu digitei apenas a data que foi 09/08/2012...ele listou tudo certinho, com a data selecionada e todos os outros campos, sem filtro. Quando digitei a data 09/08/2012 e a UF BA ele está filtrando tudo que há UF=BA eu coloquei um echo na minha query para ver como ela ta ficando e o resultado foi esse:
SELECT * FROM dados where cha_data_criacao like '%09/08/2012%' or cha_status like' ' or cha_classificacao like' ' or est_uf like'BA'

onde estou errando? :(

Edited by Ronierick
Link to comment
Share on other sites

  • 0
não deveria ter % nos like ?

SELECT * FROM dados where cha_data_criacao like '%09/08/2012%' or cha_status like' ' or cha_classificacao like' ' or est_uf like'BA'

Amigo, continua sem funcionar, mesmo colando os

'%$uf%'
quando tento filtrar pelo dia 09/08/2012 os dados da uf=BA e status= fechado, ele trás tudo!! a query executa está sendo essa:
SELECT * FROM dados where cha_data_criacao like '%09/08/2012%' or cha_status like'%Fechada%' or cha_classificacao like'%%' or est_uf like'%BA%'

:(

Link to comment
Share on other sites

  • 0

Guenta ai, que vou ver em um sistema meu que tem algo igual a este e funciona e te trago como eu fiz, mas tenho certeza que foi nesse modo, la eu trabalho ocm 4 campos na pesquisa.

tem outro metodo que é o correto que é atribuindo as condições tipo

if(!isset($data)) { $data = null  } else { $data = "like data '%{$data}%''" }

e depois monte a query com as variaveis assim a sua query não fica poluida quando o campo ta vazio.

Edited by JaguA
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...