lnsdns 0 Denunciar post Postado Maio 29, 2014 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
Osmar L Lima 51 Denunciar post Postado Maio 29, 2014 O campo data é do tipo datetime? Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Maio 29, 2014 (int)? Qual o formato da sua data? Esta realizando a consulta com o mesmo formato, correto? Compartilhar este post Link para o post Compartilhar em outros sites
lnsdns 0 Denunciar post Postado Maio 29, 2014 Datetime. Então, teria que ser (datetime)? È isso? Tô no trabalho, vou testar em casa. Compartilhar este post Link para o post Compartilhar em outros sites
Keven Jesus_164006 39 Denunciar post Postado Maio 29, 2014 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 Compartilhar este post Link para o post Compartilhar em outros sites
lnsdns 0 Denunciar post Postado Maio 29, 2014 é... 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
Prog 183 Denunciar post Postado Maio 29, 2014 Não cara, no banco de dados, esse campo DATA esta como formato DATETIME? Compartilhar este post Link para o post Compartilhar em outros sites
lnsdns 0 Denunciar post Postado Maio 29, 2014 Não cara, no banco de dados, esse campo DATA esta como formato DATETIME? SIm, no banco tb. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Maio 30, 2014 E as datas estão no mesmo formato? 2014-05-30 (por exemplo, YYYY-MM-DD) Compartilhar este post Link para o post Compartilhar em outros sites
lnsdns 0 Denunciar post Postado Maio 30, 2014 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
Prog 183 Denunciar post Postado Maio 30, 2014 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
lnsdns 0 Denunciar post Postado Maio 30, 2014 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