Ir para conteúdo

Arquivado

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

lnsdns

Busca entre datas

Recommended Posts

Olá, galera!

Na minha busca entre datas não estou conseguindo exibir os resultados. Vejam as páginas:

 

busca.php

 

<form name="busca_noticia" method="POST" action="recebe_busca.php">
Data inicial:
<input type="text" name="data_inicial" id="data_inicial" value="<? echo $data_inicial; ?>" />
Data final:
<input type="text" name="data_final" id="data_final" value="<? echo $data_final; ?>" />
<input type="submit" name="buscar" value="buscar" />
</form>
recebe_busca.php
<?PHP
include "conecta_mysql.inc";
(int) $data_inicial = isset($_POST['data_inicial']) ? $_POST['data_inicial'] : '';
(int) $data_final = isse($_POST['data_final']) ? $_POST['data_final'] : '';
$sql = mysql_query("SELECT * FROM NOTICIAS WHERE data BETWEEN '$data_inicial' AND '$data_final' ORDER BY id_noticia DESC LIMIT 0,5");
$quantreg = mysql_num_rows($sql);
while ($tbl = mysql_fetch_array($sql))
{
$id_noticia = $tbl["id_noticia"];
$titulo = strtoupper($tbl["titulo"]);
$noticia = $tbl["noticia"];
$data = $tbl["data"];
echo "<p>$titulo</p>";
echo "<p>$data</p>";
echo "<p>$noticia</p>";
}
?>
O que está errado ou faltando? A página recebe_busca.php não exibe os resultados da busca.
Agradecido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é... alterei as duas linhas para:

 

(datetime) $data_inicial = isset($_POST['data_inicial']) ? $_POST['data_inicial'] : '';

(datetime) $data_final = isset($_POST['data_final']) ? $_POST['data_final'] : '';

 

mas ainda não resolveu. Ele não exibe o resultado do período. Sugestões?


ta faltando coisa ai .. e se eu quiser escolher somente a data inicial ou a data final ? between nao irá resolver ...

tu precisa de um siwtch para melhorar este where

Vlw pelo post, Keven Jesus, vc tá certo, mas no momento o que eu preciso é resolver essa busca por período de datas.


(int)?

 

Qual o formato da sua data?

Esta realizando a consulta com o mesmo formato, correto?

é... alterei as duas linhas para:

(datetime) $data_inicial = isset($_POST['data_inicial']) ? $_POST['data_inicial'] : '';

(datetime) $data_final = isset($_POST['data_final']) ? $_POST['data_final'] : '';

mas ainda não resolveu. Ele não exibe o resultado do período. O WHERE tá certinho, não entendo. Sugestões?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E as datas estão no mesmo formato?

 

2014-05-30 (por exemplo, YYYY-MM-DD)

Pois é, Prog, vc matou a questão. É pq eu não postei, mas tinha javascript modificando a entrada das datas inicial e fianal para o nosso formato (xx/xx/xxxx), então foi só tratar de volta e tirar aquele (datetime) que não tava dando certo tb:

 

$data_inicial = isset($_POST['data_inicial']) ? $_POST['data_inicial'] : '';
$data_final = isset($_POST['data_final']) ? $_POST['data_final'] : '';
$nova_data_inicial = implode("/",array_reverse(explode("/","$data_inicial")));
$nova_data_final = implode("/",array_reverse(explode("/","$data_final")));
Mas tem outro detalhe, o BETWEEN era pra funcionar como >= ou <=, mas ele não considera o =. Por exemplo, se eu fizer uma busca entre 30/05/2014 e 30/05/2014 ele não exibe nada. Aliás, nem utilizando o >= e <= sem o BETWEEN não funciona, tá ainda meio inconsistente. Tem sugestões sobre isso? Obg pelo post!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, a expressão é esta, só que o campo DATETIME tem as horas, daí tu pode fazer assim:

 

 

$nova_data_inicial = implode("/",array_reverse(explode("/","$data_inicial"))) . " 00:00:00";
$nova_data_final = implode("/",array_reverse(explode("/","$data_final"))). " 23:59:59";

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Sim, a expressão é esta, só que o campo DATETIME tem as horas, daí tu pode fazer assim:

$nova_data_inicial = implode("/",array_reverse(explode("/","$data_inicial"))) . " 00:00:00";
$nova_data_final = implode("/",array_reverse(explode("/","$data_final"))). " 23:59:59";

Obg pelos posts, Prog! Resolvido o problema com o BETWEEN agora com a inclusão das horas!

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.