Ir para conteúdo

POWERED BY:

Arquivado

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

mmillers

Não retorna erro nem os dados

Recommended Posts

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

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

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

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


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

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

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

$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

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

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

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

×

Informação importante

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