Ir para conteúdo
Santos_2015

filtro sem informar campo data [resolvido]

Recommended Posts

Galera é o seguinte,

 

tenho filtro antes do montar meu select, tenho três campos no filtro: cod_tipo_item_despesa, data_inicio e data_fim. só que caso a data não tenha sido informada, minha consulta retorna falso, segue sql:

select...

where desp.cod_tipo_item_despesa like :cod_tipo_item_despesa 
			and DATE_FORMAT(desp.data_despesa,'%d/%m/%Y') BETWEEN :data_inicio AND :data_fim

 

Thanks.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual data não foi informada ?

 

Um valor não informado (null) sempre retorna false em uma pesquisa.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, Motta disse:

Qual data não foi informada ?

 

Um valor não informado (null) sempre retorna false em uma pesquisa.

 

 

nenhuma das duas, nem data_inicio nem data_fim(por padrão quando não é informado é enviado "1969-12-31", tentei tratar substituindo por '%' mas não me retornou false na pesquisa), no caso seria informado apenas o "cod_tipo_item_despesa".

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ponha uma critica não permitindo data nula na pesquisa 

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Motta disse:

Ponha uma critica não permitindo data nula na pesquisa 

Mas o problema é que ela pode ou não ser informada, não é obrigatório

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com coalesce 

select...

where desp.cod_tipo_item_despesa like :cod_tipo_item_despesa 
            and DATE_FORMAT(desp.data_despesa,'%d/%m/%Y') 
                  BETWEEN COALESCE(:data_inicio,MAKEDATE(2010,1)) and 
                          COALESCE(:data_fim,CURDATE())

vide

 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_curdate

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_makedate

 

Nota , não uso Mysql pode ter algum erro de síntaxe nisto mas a ideia básica e tratar o valor nulo.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, Motta disse:

Tente com coalesce 


select...

where desp.cod_tipo_item_despesa like :cod_tipo_item_despesa 
            and DATE_FORMAT(desp.data_despesa,'%d/%m/%Y') 
                  BETWEEN COALESCE(:data_inicio,MAKEDATE(2010,1)) and 
                          COALESCE(:data_fim,CURDATE())

vide

 

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_curdate

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_makedate

 

Nota , não uso Mysql pode ter algum erro de síntaxe nisto mas a ideia básica e tratar o valor nulo.

 

legal, já havia tentado com coalesce, pelo que entendi está "amarrando" os intervalos... vou tetar aqui, Valeu.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por isaque_cb2
      Boa noite, estou postando qui por que pesquisei e não achei nada que ajudasse... bem, criei um banco de dados para armazenar meus projetos e carrega-los dinamicamente com o php, deu certo, mas quando tem alguma acentuação no texto ele retorna "�"... 
      ~Grato desde Já~
    • Por lynx_
      Olá,
      Gostaria de criar um filtro para categorias dos posts no WP. Como nesse exemplo https://bootsnipp.com/snippets/N6vrp.
      Mas não manjo muito de php, então não sei como faço, para que quando eu clique no botão da 'categoria1' só apareça posts dessa categoria. E quando clicar em 'Todos' aparecer os posts de todas as categorias..
      Meu código está assim, por enquanto.
      <?php get_header(); ?> <?php /* Template Name: Arquivo Posts */ ?> <div class="container"> <h1 style="text-align: center; color: white; margin-bottom: 30px;">Noticias</h1> <div class="filtro" style="text-align: center;"> <a href="<?php get_posts('orderby=date&order=DESC&category_name=categoria1'); ?>">Categoria 1</a> <a>Categoria 2</a> <a>Todos</a> </div> <div class="row"> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="col-xs-12 col-sm-6 col-md-4 " style="text-align: center;"> <a href="<?php the_permalink(); ?>"> <div class="imgPost"><?php the_post_thumbnail(); ?></div> <h2><?php the_title(); ?></a></h2> <p><em><?php echo ucfirst(get_the_time('l, j \d\e F \d\e Y')); ?></em></p> <hr> </div> <?php endwhile; else: ?> <p><?php _e('Desculpe, não há posts a serem exibidos.'); ?></p> <?php endif; ?> </div> </div> <?php get_footer(); ?> Alguém sabe me ajudar?
      Obrigada
    • Por Pedro Terencio
      votar contrafavorita   Bom dia galera, estou com uma duvida sobre manipulação de data. Preciso pegar um valor (dado pelo usuario) e transformar este valor em dia do mês.
       
      Exemplo : 
      $Valor_Usuario = 30;
      $Data = 12/10/2018;
      $Resultado = 30/10/2018;
       
      O que estou buscando fazer é, uma rotina de gastos, então o usuario me informa um dia fixo de gasto, (Todo dia 30 irei gastar R$50) e o sistema todo dia 30 irá subtrair R$50 da conta. O que me gera outra duvida...
       
      Depois da manipulação da data como fazer esse checking da data? (Se hoje é dia 30 ou não // Para saber quando subtrair os R$ 50)
    • Por Rodrigo Araujo
      Preciso fazer um campo de pesquisa no wordpress para um cliente, onde o mesmo possa pesquisar seus clientes pelo cnpj e o banco de dados retornar apenas o que ele pesquisou e nao todos os clientes cadastrados, alguem pode me ajudar e me explicar alguns comandos ? 
       

       
      este é o que eu estou usando mas dá erro na programação inteira.
    • Por maal0n
      Bom dia pessoal, sou iniciante no php e estou com um problema, alguem consegue me ajudar...
       
      O codigo abaixo tem a função de mostrar todos os vencimentos da semana para pagamento de mensalidades... só que ele encontra o dia do sabado(ultimo dia da semana) e mostra os 6 dias anteriores a ele... o problema acontece quando o sabado cai no dia 1 ou 2 do mes seguinte... ai ele vai calcular dia 1 menos 6... e nao vai me gerar resultados nenhum... conseguiram entender? alguem consegue me ajudar nisso ?
       
      segue meu codigo..
       
       
       
      <?php $seleciona = mysql_query("SELECT anoselecionado FROM anoselecionado LIMIT 1"); while($ln = mysql_fetch_array($seleciona)){ $anoselecionado = $ln['anoselecionado']; } ?> <?php $dataatual = date('d/m/y'); $partes = explode("/", $dataatual); $diaatual = $partes[0]; $mesatual = $partes[1]; $anoatual = "20".$partes[2]; if ($mesatual == "1"){$essemes = 'jan';}; if ($mesatual == "2"){$essemes = 'fev';}; if ($mesatual == "3"){$essemes = 'mar';}; if ($mesatual == "4"){$essemes = 'abr';}; if ($mesatual == "5"){$essemes = 'mai';}; if ($mesatual == "6"){$essemes = 'jun';}; if ($mesatual == "7"){$essemes = 'jul';}; if ($mesatual == "8"){$essemes = 'ago';}; if ($mesatual == "9"){$essemes = 'setembro';}; if ($mesatual == "10"){$essemes = 'outubro';}; if ($mesatual == "11"){$essemes = 'nov';}; if ($mesatual == "12"){$essemes = 'dez';}; $sabado = 6; //sabado = 6º dia = fim da semana. $dia_atual=date('w'); //pego o dia atual $dias_que_faltam_para_o_sabado = $sabado - $dia_atual; $inicio = strtotime("-$dia_atual days"); $fim = strtotime("+$dias_que_faltam_para_o_sabado days"); $primdiasemana = date('d',$inicio); //data inicial $ultmodiasemana = date('d',$fim); //data final $seleciona = mysql_query("SELECT * FROM mensalidades WHERE (data_pagamento BETWEEN '".$primdiasemana."' and '".$ultmodiasemana."') and ano = ".$anoselecionado." and $essemes = 0 ORDER by id DESC"); $conta = mysql_num_rows($seleciona); if($conta <= 0){ echo "<center><div><h3>Não existem mensalidades pendentes com vencimento esta semana</h3></div></center>"; }else{ echo " <table class='table table-bordered' id='tabela-mensalidades'> <thead> <tr style='backgroud-color: #2D335B'> <th style='width: 200px'>Aluno</th> <th>Vencimento</th> <th>Status</th> <th>Serviço</th> <th>Valor</th> </tr> </thead> "; while($ln = mysql_fetch_array($seleciona)){ $id = $ln['id']; $clientes_id = $ln['clientes_id']; $servico_id = $ln['servico_id']; ?>  
×

Informação importante

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