gust.php 1 Denunciar post Postado Agosto 24, 2016 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
kelvim 11 Denunciar post Postado Agosto 25, 2016 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
Maykel-ctba 233 Denunciar post Postado Agosto 25, 2016 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
gust.php 1 Denunciar post Postado Agosto 25, 2016 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
kelvim 11 Denunciar post Postado Agosto 25, 2016 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
Maykel-ctba 233 Denunciar post Postado Agosto 25, 2016 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
icarof 9 Denunciar post Postado Agosto 26, 2016 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