Ir para conteúdo

Arquivado

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

PaladinoMedieval

Uso errado de variavel

Recommended Posts

Bom Dia !

 

Uma das piores coisas em php(nao no php mas no infeliz que programa..rs) é o uso errado de variaveis ..

 

Peguei um sistema pra arrumar e nele encontrei um cumulo de gambiarra !!

 

O cara usou variavel Varchar pra declarar os campos 'dia', 'mes', 'ano' .. Ele teria simplificado minha vida se tivesse usado uma variavel Date

 

Agora me encontro numa situação em que preciso fazer filtros de "Data inicial" até "Data final" ..

 

Em um primeiro momento meu filtro via comando SQL estava assim:

 

$pesquisa1 = @mysql_query("SELECT cdg, dia, mes, ano FROM cheg_agregados WHERE dia >= $dia1 and dia <= $dia2 and mes >= $mes1 and mes <= $mes2 and ano >= $ano1 and ano <= $ano2 ORDER BY dia ASC");

mas dessa forma não está saindo corretamente o filtro.. pois ele entra em conflito dia, mes e ano.. ele só funciona se por exemplo eu colocar na consulta do dia 01 até o dia 31 .. mas nem sempre a consulta sera dessa forma..

 

Caso ele tivesse feito com variavel Date, com apena um campo(campo data por exemplo) eu tinha certeza que dessa forma funcionaria:

 

$dataini = $ano1."-".$mes1."-".$dia1;
$datafim = $ano2."-".$mes2."-".$dia2;
$pesquisa1 = @mysql_query("SELECT cdg, data FROM cheg_agregados WHERE data >= '$dataini' and data <= '$datafim' ORDER BY data ASC");

Alguem sabe como posso proceder para que a consulta funcione mesmo com a variavel errada ? miha logica nao conseguiu superar essa gambiarra ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você Usar o Between no Select pode dar certo

 

SELECT cdg, data FROM cheg_agregados WHERE data between '$dataini' and '$datafim' ORDER BY data ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao acontece que eu vou mesmo precisar usar os campos dia, mes, ano ..

 

Aquele que eu coloquei apenas o campo date é só um exemplo de como seria a forma correta(eu fiz em um script a parte e funcionou)

 

Mas oq eu vou ter q arrumar mesmo é primeiro comando.. esse:

 

$pesquisa1 = @mysql_query("SELECT cdg, dia, mes, ano FROM cheg_agregados 
WHERE dia >= $dia1 and dia <= $dia2
and mes >= $mes1 and mes <= $mes2 
and ano >= $ano1 and ano <= $ano2 ORDER BY dia ASC");

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.