Ir para conteúdo

Arquivado

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

ajr1977

Pesquisa por período com filtros

Recommended Posts

Prezados,

 

Sou iniciante em programação web, e para estudar desenvolvi um sistema de Ordem de Serviço e tenho uma tela de consulta onde preciso filtrar por data. Além de fornecer a Data Inicial e Final (Dt_Inicio e Dt_Fim, o usuário possui mais dois filtros, um para a AREA (SeelctArea) e outro para a SITUAÇÃO (SelectSituacao) da Ordem de Serviço. O problema é que a consulta só retorna valores se o usuário utilizar todos os filtros, e eu gostaria que o usuário pudesse consultar também individualmente por filtro. Por exemplo, só por data ou por área ou situação. E que concatenasse a combinação de filtros, consultar, por exemplo, a AREA por DATA. A minha query está assim montada: 

 

As Variáveis

If (isset($_POST['BtnBusca'])){
	$Dt_Inicio = ($_POST['Dt_Inicio']);
	$Dt_Fim = ($_POST['Dt_Fim']);
	$Area = ($_POST['SelectArea']);
	$Situacao = ($_POST['SelectSituacao']);

 

Minha Consulta


mysql_select_db($database_bd_os, $bd_os);
$query_BuscaOS = "SELECT * FROM TBL_GERAL WHERE DT_CADASTRO BETWEEN '$Dt_Inicio' AND '$Dt_Fim' AND AREA like '$Area' AND SITUACAO_OS like '$Situacao' ORDER BY DT_CADASTRO DESC";
$BuscaOS = mysql_query($query_BuscaOS, $bd_os) or die(mysql_error());
$row_BuscaOS = mysql_fetch_assoc($BuscaOS);
$totalRows_BuscaOS = mysql_num_rows($BuscaOS);

Ficaria profundamente agradecido caso pudessem me ajudar com a consulta correta. 

 

Spoiler
Spoiler

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a gente retornar a consulta correta, como você vai aprender?
Se você quer que o usuário consiga pesquisar por N filtros, basta você filtrar o que o usuário preencheu.

Se apenas as datas estiverem preenchidas executa isso();
Se apenas a area estiver preenchida executa isso();

Se apenas a situação estiver preenchida executa isso();

Aconselho usar o .= para montar a query de forma dinâmica de acordo com o que foi preenchido e validado pelas condicionais.
[]s.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro vamos na lógica, sua SQL está assim:

 

SELECIONE tudo DE TBL_GERAL ONDE DT_CADASTRO BETWEEN '$Dt_Inicio' E '$Dt_Fim' E AREA like '$Area' E SITUACAO_OS like '$Situacao' ORDER BY DT_CADASTRO DESC

 

Resumindo, você quer selecionar com todos os campos, utilizando AND (E, data e hora (por exemplo)), você tem que executar assim: data ou hora (exemplo), isso se chama operadores de funções, achará tópicos aqui: https://www.w3schools.com/php/php_operators.asp

 

No seu caso, se utiliza a operação OU (or), ficando assim:

 

$query_BuscaOS = "SELECT * FROM tbl_geral WHERE dt_cadastro BETWEEN '".$Dt_Inicio."' AND '".$Dt_Fim."' OR (area = '".$Area."' OR situacao_os = '".$Situacao."') ORDER BY dt_cadastro DESC";

 

Sugiro ler os artigos neste site que passei sobre operações. Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por btpdsnb
      Boa tarde, pessoal!
      Meu nome é Rodrigo e sou aluno de graduação da FEA-USP. Meu grupo está realizando uma pesquisa para analisar o que motiva e retém os desenvolvedores de software nas organizações do Brasil.
      Acreditamos que este tipo de pesquisa pode ajudar as empresas a entenderem os principais fatores de retenção e gerir melhor as práticas de gestão de pessoas adotadas para retê-los.
      Todos os dados pessoais coletados serão confidenciais, utilizados exclusivamente para fins acadêmicos.
      Aos que puderem responder, o questionário leva de 5 a 8 minutos para ser respondido.
      Link do formulário: https://docs.google.com/forms/d/1izmjInl_uuTgjIaQUF7Lk6rh7OudSy6MoBRugiMQdic/viewform?edit_requested=true
    • Por FelipeCostaFT
      Estou iniciando uma startup para ajudar os devs a entrarem no mercado de trabalho mais preparados
      e, por isso, com maior chance de arrumar um bom emprego.

      Mas gostaria de saber como está sendo a realidade de vocês nesse momento de encarar o mercado.
      Alguém já está nessa fase ou até dentro do mercado poderia me ajudar? Esse forms dura 1 minuto pra
      responder e vai nos auxiliar a descobrir como ajudá-los a chegar lá mais rápido.
       
      link do forms
    • Por Spy_brbr
      Tenho um sistema em PHP que funciona como um tipo de repositório para documentos. No início a ideia era apenas realizar pesquisas pelo título ou tipo de documento, mas andei lendo sobre algumas ferramentas como Apache Solr ou ElasticSearch que realizazam a indexação dos arquivos e permite realizar as buscas dentro de arquivos PDF, DOC, etc. Alguém já utilizou essas ferramentas ?
    • Por Jefferson andre
      Ola, Tenho uma lista de nomes de clientes escritas sem nenhum padrao de maiscula e minuscula e preciso fazer uma pesquisa nelas. O usuario vai digitar sem nenhum padrao. Entao preciso que todo o conteudo da lista e o campo digitado pelo usuario seja convertido para maisucula/minuscula e a pesquisa seja feita.   Exemplo: JEFFERSON rose Nicolas ROSEMEIRE   PESQUISAR POR: Ro   RETORNO DA PESQUISA: rose ROSEMEIRE   Como fazer isso em javascript ? preciso de um exemplo se tiver ok
    • Por Alberto Nascimento
      Estou tentando, mas não esta exibindo o registro...
       
      localizar.php
       
      <?php session_start(); $_SESSION["localizarfotografia"] = $_POST["codphoto"]; ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>EXIBIR FOTOGRAFIA PELO CÓDIGO INTERNO</title> <style type="text/css"> <!-- .Style6 {font-size: 13px} .auto-style20 { text-align: center; } .auto-style22 { background-color: #FEB624; } .auto-style23 { font-family: Verdana, Geneva, Tahoma, sans-serif; font-size: xx-small; text-align: center; } .auto-style25 { background-color: #FFCC66; } .auto-style26 { font-size: x-small; } .auto-style27 { font-size: x-small; text-align: center; } .auto-style28 { text-align: center; background-color: #FEB624; } --> </style> </head> <body style="margin-top: 50"> <body onload="form1.login.focus();"> <form id="form1" name="form1" method="post" action="pesquisaragora.php"> <div class="auto-style20"> <table align="center" cellpadding="0" cellspacing="0" class="auto-style23" style="width: 500"> <tr> <td class="auto-style20"> &nbsp;</td> </tr> <tr> <td class="auto-style22"> &nbsp;</td> </tr> <tr> <td class="auto-style25" style="height: 41px">Informe o código da FOTOGRAFIA abaixo</td> </tr> <tr> <td class="auto-style25"> <table align="center" style="width: 450"> <tr> <td class="auto-style27"><span class="Style6"> <label> <input name="codphoto" type="text" id="codphoto" style="width: 305px; height: 83px;" /></label></span></td> </tr> <tr> <td class="auto-style26"><strong> </strong></td> </tr> <tr> <td class="auto-style20"><span class="Style6"> <label> <input type="submit" name="Submit" value="LOCALIZAR PHOTO" /></label></span></td> </tr> </table> </td> </tr> <tr> <td class="auto-style25">&nbsp;</td> </tr> <tr> <td class="auto-style28"> &nbsp;</td> </tr> </table> <br></div> </form> </body> </html>  
      pesquisarphoto.php
       
      <?php include("config.php"); $codphoto = $_POST['codphoto']; $sql_logar = "SELECT * FROM photos WHERE codphoto = '$codphoto'"; $exe_logar = mysql_query($sql_logar) or die (mysql_error()); $fet_logar = mysql_fetch_assoc($exe_logar); $num_logar = mysql_num_rows($exe_logar); $codphoto = $fet_logar['codphoto']; $nome = $fet_logar['nome']; $cidade = $fet_logar['cidade']; $uf = $fet_logar['uf']; if ($num_logar == 0){ echo "Desculpe, mas a foto não foi localizada."; echo "<br><a href='javascript:window.history.go(-1)'>Clique aqui e tente novamente.</a>"; } else{ session_start(); $_SESSION['codphoto'] = $codphoto; $nome = $fet_logar['nome']; $cidade = $fet_logar['cidade']; $uf = $fet_logar['uf']; echo $exibir["codphoto"]; echo $exibir["nome"]; echo $exibir["cidade"]; echo $exibir["uf"]; } ?>  
       
       
       
       
       
       
       
       
×

Informação importante

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