mmillers 1 Denunciar post Postado Janeiro 27, 2014 Bom dia pessoal, Vejam se podem me ajudar, tenho o seguinte código <div> <h3>Contas a receber</h3> <?php $hoje = date("d/m/Y"); $amanha = date('d/m/Y', strtotime("+7 days")); conection(); $sql = mysql_query("SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE date_format(data_prevista, '%d/%m/%Y') BETWEEN '$hoje' AND '$amanha'"); mysql_close(); echo "<table width=50% align='center'> <tr> <td> # </td> <td> Situação </td> <td> Nome </td> <td> Data Prevista </td> <td> Tipo </td> <td> Valor </td> </tr>"; while ($result = mysql_fetch_array($sql)) { if ($result['situacao'] == 0) $situacao = "Pendente"; else $situacao = "Pago"; conection(); $tipoc = mysql_query("SELECT * FROM tipo_conta WHERE id_tipo_conta=" . $result['tipo_id']); mysql_close(); $conta = mysql_fetch_array($tipoc); echo "<td>"; ?> <a href="?acao=finalizar&table=receber&id=<?php echo $res['id_receber'] ?>', 300,270 );">Finalizar </a> <?php echo "</td><td>" . $situacao . "</td><td>" . $result['nome'] . "</td> <td> " . $result['data_prevista'] . "</td><td>" . $conta['nome'] . "</td><td>" . $result['valor'] . "</td>"; } echo "</table>"; ?> </div> A minha variável $sql parece estar não obtendo os dados do banco, pois ela vem vazia mas quando retiro a condição WHERE os dados são obtidos, ou seja, no momento de comparar as datas diz que não possui dados dentro daquela data, mas os dados estão no banco, alguém pode me ajudar a arrumar esta consulta? Agradecido! Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 27, 2014 troca: $sql = mysql_query("SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE date_format(data_prevista, '%d/%m/%Y') BETWEEN '$hoje' AND '$amanha'");por$sql = mysql_query("SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE date_format(data_prevista, '%d/%m/%Y') BETWEEN '$hoje' AND '$amanha'")or die(mysql_error()); leia o erro que vai aparecer na tela e corrija. Um ponto a notar, é que para o BETWEEN funcionar corretamente, vc tem q comparar datas com datas, no formato correto. Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 27, 2014 Não teve retorno nenhum Willian porém fiz uma listagem simples tentando formatar a data e não formatou, ou seja o comando date_format(data_prevista, '%d/%m/%Y') as data não está sendo interpretado corretamente, tem alguma ideia do que pode ser feito? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 27, 2014 Teu servidor está muito mal configurado se não voltou erro. Adicione as seguintes linhas no início do script: ini_set("display_errors", true); error_reporting(E_ALL ^ E_NOTICE); A query deixe assim: $sql = mysql_query("SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE data_prevista BETWEEN '$hoje' AND '$amanha'")or die(mysql_error()); lembrando a as variaveis $hoje e $amanhã, devem estar no formato: 'yyyy-mm-dd' Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Janeiro 27, 2014 SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE (date_format(data_prevista, '%d/%m/%Y') BETWEEN '$hoje' AND '$amanha' ) Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 27, 2014 Não deu certo Marcos :/ William, mesmo colocando as duas linhas no inicio do script não retornou nenhum erro. Você digitou ali em cima que as variáveis $hoje e $amanha devem estar no formato 'yyyy-mm-dd', sendo assim não preciso convertê-las pois as datas estão sendo salvas no banco com este formato. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 27, 2014 Então vc não tem nenhum resultado que bata com a sua pesquisa. $str = "SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE data_prevista BETWEEN '$hoje' AND '$amanha'"; echo $str; $sql = mysql_query($str)or die(mysql_error());e analise o que voltar do echo. E se não voltar nenhum erro, é pq vc não tem nenhum dado que bata com a pesquisa. Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Janeiro 27, 2014 $hoje = date("Y-m-d"); $amanha = date('Y-m-d', strtotime("+7 days")); SELECT *, DATE_FORMAT(data_prevista, '%d/%m/%Y') AS data FROM receber WHERE DATE(data_prevista) BETWEEN '$hoje' AND '$amanha'; Compartilhar este post Link para o post Compartilhar em outros sites
Marcos Xavier 189 Denunciar post Postado Janeiro 27, 2014 Estranho. Testei em uma tabela aqui dessa forma. Faça o seguinte... Para testar, deixe a query assim (para testar): $sql = "SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE date_format(data_prevista, '%d/%m/%Y') BETWEEN '$hoje' AND '$amanha'"; die($sql);//die para interromper o script Verifique com isso a sua query. Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 27, 2014 Revendo todos os comentários a cima, testando-os e analisando linha por linha, letra por letra calmamente descobri o erro. Obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Janeiro 27, 2014 Amigo, Poste sua solução aqui, pode ajudar outras pessoas com problemas similares. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 27, 2014 Olha a solução proposta pelo William Bruno funcionou, eu tinha deixada me perdido no meio das sql antes. $sql = mysql_query("SELECT *, date_format(data_prevista, '%d/%m/%Y') as data FROM receber WHERE data_prevista BETWEEN '$hoje' AND '$amanha'") William, Sendo voce moderador, me aconselha a abrir novo topico ou perguntar aqui sobre outra questao do mesmo assunto? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Janeiro 27, 2014 Oi @mmillers, se é outra questão, pode abrir um novo tópico. Assim fica menos confuso. Compartilhar este post Link para o post Compartilhar em outros sites
mmillers 1 Denunciar post Postado Janeiro 27, 2014 Ok, William vou cria-lo veja se pode me ajudar por favor. Compartilhar este post Link para o post Compartilhar em outros sites