Ir para conteúdo

POWERED BY:

Arquivado

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

gust.php

Relatorio por periodo

Recommended Posts

Prezados, estou tentando gerar um relatório por período da seguinte maneira:

<?php
                    $dia = "";
                    foreach($this->lista as $p):
                    $diaPer = $p->getDATA_INICIO()->format("d/m/Y");
                    
                    if($diaPer != $dia){
                        
                    $dia = $diaPer;
                    echo "<tr class='danger'><th><b>DATA " . $dia . "</b></th></tr>";
                    
                    }
                    ?>

Isso ta funcionando em partes, se eu quiser um periodo do dia 01/08 a 30/08 ele cria a listagem da seguinte maneira:

02/08

---------------

---------------

---------------

---------------

03/08

---------------

---------------

---------------

---------------

07/08

----------------

----------------

------------------

....

O grande problema que ta acontecendo, é que ele sempre pula o primeiro dia, no exemplo acima, ele não imprimiu o dia 01, e eu tenho registro nesse dia. Se eu colocar um período com 2 datas iguais, ele não mostra nada, mesmo que que tenha registro nessa data.

Acredito que eu tenha que fazer isso com do while ... Alguem pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O foreach carrega todos os itens do objeto, então se o $this->lista trouxer "01/08" é para mostrar, então dê um var_dump($this->lista) antes do foreachse para verificar se está trazendo mesmo essa data.

Estou percebendo agora que você está abrindo o foreach com ":" e fechando com "}", se você abrir com dois pontos tem que fechar com "endforeach" ou abrir com { e fechar com }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato. Talvez sua consulta não esteja trazendo a data do dia 01.

Tive esse problema recentemente... tente colocar a hora no BETWEEN como 00:00:00 para a primeira condição e 23:59:59 para a segunda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Kelvim,

Cara, eu to fechando o foreach com ednforeach ... Coloquei o var_dump($this->lista) antes e não aparece nada ... A questão não é só com o 01/08, a primeira data preenchida no form nunca aparece na listagem. Exemplo, se eu quiser que a data 02/08 apareça no relatório, eu tenho q colocar 01/08 a 04/08 ... Se eu colocar 02/08 a 04/08 a data 02 não vai parecer.

Maykel, nem testei o modo que você sugere pois estou usando o campo date no DB, não estou usando datetime.

Obrigado pelas respostas ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Kelvim,

Cara, eu to fechando o foreach com ednforeach ... Coloquei o var_dump($this->lista) antes e não aparece nada ... A questão não é só com o 01/08, a primeira data preenchida no form nunca aparece na listagem. Exemplo, se eu quiser que a data 02/08 apareça no relatório, eu tenho q colocar 01/08 a 04/08 ... Se eu colocar 02/08 a 04/08 a data 02 não vai parecer.

Cara, muito estranho o var_dump não mostrar nada (qualquer objeto ele depura, mesmo se o valor for null ele informa: http://php.net/manual/en/function.var-dump.php), o que eu imagino que esteja acontecendo é que $p->getDATA_INICIO() não está trazendo a primeira data, seria bom confirmar isso, com var_dump, print_r, ou alguma outra forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está o seu $this->lista? Traz aqui pra gente!

Outra coisa... seu campo de datas não está como DATETIME? Acredito que você deva rever isso aí, pra evitar problemas e ter mais soluções nativas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um print_r na array e ve as posições dos dados que ta recebendo,e lembre a Array começa contando a partir da posição 0 e não da 1

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.