Ir para conteúdo
Fábio.info7

AJUDA COM MENSAGEM DO PHP: Warning: Invalid argument supplied for foreach()

Recommended Posts

Boa tarde a todos, gostaria de uma ajuda, estou desenvolvendo um pequeno sistema de cadastro de clientes assinastes de um certo pacote de serviços, preciso que ao cadastrar o cliente, automaticamente o sistema grave a data do cadastro e atribui + 30 dias onde esta será a data de vencimento(após os primeiros 30 dias), até aí tudo bem, tudo funcionando, porém preciso também que o sistema liste os clientes em que a data do vencimento está se aproximando(faltando 5 dias para o vencimento), então determinei que o sistema lista os clientes que estão a 5 dias do vencimento, então então peguei a data de cadastro e atribuí + 25 dias, agora que vem o problema, na hora de listar esses clientes cuja data de vencimento se aproxima eu recebo a seguinte mensagem "Warning: Invalid argument supplied for foreach()", sou novo em php OO e não estou conseguindo resolver essa questão, vou deixar aqui a função que criei e a chamada da função também:

 

 

public function proximosVencimentos(){
        //DATA DA ASSINATURA/CADASTRO
        $dt_assinatura = $this->assinatura;
        
        //PEGA A DATA DA ASSINATURA E ACRESCENTA + 30 DIAS (VAI VIRAR A DATA DO VENCIMENTO APÓS 30 DIAS)
        $vencimento = date('Y-m-d', strtotime("+30 days" . strtotime($dt_assinatura)));
        
        //PEGA A DATA DA ASSINATURA E ACRESCENTA + 25 DIAS 
        $vencimento_proximo = date('Y-m-d', strtotime("+25 days" . strtotime($dt_assinatura)));
                       
            require 'conexao.php';
            $sql = "select * from dados where current_date() between dt_vencimento_proximo = :dt_vencimento_proximo AND dt_vencimento = :dt_vencimento ";
            $stmt = $conn->prepare($sql);
            $stmt->bindParam(":dt_vencimento_proximo", $vencimento_proximo);
            $stmt->bindParam(":dt_vencimento", $vencimento);
                          
             if($stmt->execute()== TRUE){
                return $stmt->fetchAll(PDO :: FETCH_OBJ);
             }else{
                $mensagem = "Não há dados a serem exibidos.";
                return $mensagem;
             }
       }  

 

ABAIXO O TRECHO ONDE EU CHAMO ESSA FUNÇÃO

foreach ($listadados->proximosVencimentos() as $key => $valor){   
   echo $valor->nome;
}
 

 

Editado por Gabriel Heming
adicionar marcação de código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por lucasrodrigues
      Estou com esse problema ao tentar vincular uma tabela do MySql a um DataSet. Utilizo o MySqlConnector 8.0.13, MySql-For-VisualStudio 1.2.8.

    • Por Ricardo Beira
      Boa tarde.
       
      Sou bem leigo em php, sei o básico do básico e preciso muito de ajuda.
      Preciso enviar 1000 emails, porém queria dividir os envios de 50 por vez.
      Queria um campo onde ecolocava os 1000 emails ou importando de um txt e ele fizesse o processo de envio de 50-50 automaticamente.
       
    • Por Kelven
      Bom dia galera tudo bem?
      Eu to com um problema, vejam o código 
      if($vencimento_carne != "") { for($i=1; $i<=$parcela; $i++){ $data_vencida = date('Y-m-d', strtotime("+1 month", strtotime($vencimento_carne))); echo $data_vencida; $sql_carne = "INSERT INTO carnes(valor, data_vencimento, valor_juros, status) VALUES ('$valor_carne', '$data_vencida', 'testet', 'Pendente')"; $query_carne = mysql_query($sql_carne); } } Minha intenção é q o mês dessa variável data vencida seja + 1 para cada linha que inserir do BD, porém desse jeito que acima eles estão ficando todos iguais com a mesma data, alguém pode me ajudar a resolver isso??
    • Por Charlie04
      Tenho uma tabela de mídias que contem ID e nome das mídias e outra com locais onde existe o ID da midia que esta no local (1 local pode der + de 1 midia ).
      Gostaria de ajuda pra conseguir selecionar quantas mídias iguais estão em cada locais.

      MIDIAS
      ID                   |    Nome 
                   
      1                    |    Coca-cola
      2                    |    Painel Disponível
      3                    |    Fanta
       
       
      IDLOCAL           IDMIDIA                               
      1                    |    1
      1                    |    1
      1                    |    2
      1                    |    3
      2                    |    1 
      1                    |    2
      2                    |    3
      2                    |    1
      1                    |    2
      2                    |    2
       
      A resposta que eu queria é parecida com isso , mas não estou conseguindo montar o select :(
      Contar quantas vezes determinado IDMIDIA aparece no mesmo IDLOCAL;
       
      IDLOCAL                    IDMIDIA                          Quantidade         
      1                             |    Coca-cola                             | 2
      1                             |    Painel Disponível                | 3
      1                             |    Fanta                                     | 1
      2                             |    Fanta                                     | 1
      2                             |    Painel Disponível                | 1
      2                             |    Coca-cola                             | 2
       
       

      Se alguém puder me ajudar eu agradeço, sou iniciante então por isso a duvida provavelmente seja básica , desde já Obrigado.
    • Por netocazuza
      Olá, bom dia a todos. Estou criando um sisteminha simples para geração de um documento em pdf. Para isso, estou juntando partes de vários projetos em  um só, e o meu problema no momento é bem simples. O sistema tá funcionando, porém gera o pdf na mesma janela, sobre a tela de cadastramento, e eu gostaria que abrisse numa nova aba ou janela, pra que  a tela de cadastramento permanecesse sempre ativa. Atualmente está assim:
      O arquivo que grava os registros termina com a instrução 
      header('Location: tela_cadastramento.php'); Isso é uma rotina pronta, que faz com que ao cadastrar um registro, já volte nesse tela, com os inputs limpos, aguardando novos registros. Fiz essa rotina primeiro, e tá funcional. Depois disso, peguei uma rotina pronta para gerar o PDF com fpdf, e criei uma function com essa rotina, que termina com: 
      $pdf->Output(); e até aí, tá tudo normal, pois é exatamente isso que quero, apenas abrir o pdf na tela, e o usuário decide o que vai fazer. Salvar, imprimir, ou os dois. Está funcionando, pois abre o pdf, tudo certinho. O único problema é que abre a janela do pdf "sobre" a janela ativa do sistema, e com isso gera um warning pois impede que a instrução do header seja cumprida. Já tentei mudar o local da chamada da função do fpdf, mas não resolveu, então gostaria de passar uma instrução para abrir o fpdf em outra aba ou janela, mas não sei como devo fazer, uma vez que na ordem do sistema, é feita uma gravação no banco, e a geração do pdf é feita de forma automática, pegando carona nessa gravação. Estou falando isso, pois se fosse uma botão específico gerar pdf, sei que teria como fazer usando target, ou onclick. Quero fazer algo equivalente, dentro da função, ou do comando de output. Será que me fiz entender, e alguém pode me ajudar?
×

Informação importante

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