Atualize hoje para o Scriptcase 9 e ganhe 35% de desconto! Atualize hoje para o Scriptcase 9 e ganhe 35% de desconto! COMPRAR AGORA!

Autor Tópico: (RESOLVIDO) - Invalid argument supplied for foreach()  (Lida 5142 vezes)

Jean Matos

  • Expert
  • *****
  • Mensagens: 985
    • Gestão de Construtoras
    • Email
(RESOLVIDO) - Invalid argument supplied for foreach()
« Online: Fevereiro 03, 2014, 11:23:46 am »
Prezados, já tenho uma app para tratar parcelamentos e funciona muito bem.. no entanto estou fazendo uma outra app aqui
usando o mesmo código só que nao funciona..sempre dá erro : Invalid argument supplied for foreach()
Código: [Selecionar]
//ESSE GRUPO DE CODIGO GERA AS PARCELAS
sc_lookup(ds_p,"SELECT descricao, quantidade
FROM
  dbo.prazos_pagamento
WHERE
    (idprazo = '{condicao}')");
$CondicaoPagto = {ds_p[0][0]}; // aqui retorno os valores por ex: 30/60
$numero = {ds_p[0][1]};// aqui retorno o numero de parcelas = 2


sc_lookup(dataset,"SELECT idcontas, idcliente, valor, obs, login, forma_pagamento, identificador
FROM         dbo.contas_receber
WHERE     (idcontas = [conta])");

$conta = {dataset[0][0]};
$cliente         = {dataset[0][1]};
$valor = {dataset[0][2]};
$obs = {dataset[0][3]};
$login = {dataset[0][4]};
$forma = {dataset[0][5]};
$identificador         = {dataset[0][6]};

// até aqui esta funcionando tudo....
$condicao=explode("/",$CondicaoPagto);
  $parcela = 1;

$lancamento = Date('Ymd G:i:s');
foreach($condicao as $dias)// a partir daqui dá o erro...e nao estou achando onde está
{

$vencimentoF = sc_date_conv({vencimento},"ddmmaaaa","aaaammdd");
$vencimento = sc_date($vencimentoF, "aaaammdd "," + ", $dias, 0, 0);
$valorparcela = $valor / $numero;
$insert_table  = 'contas_receber';      // Table name
$insert_fields = array(   // Field list, add as many as needed
              'idcliente'         => "'$cliente'",
'data_lancamento' => "'$lancamento'",
'vencimento' => "'$vencimento'",
'valor' => "'$valorparcela'",
'obs' => "'$obs'",
'login' => "'$login'",        //REVISEI E TODOS OS CAMPOS ESTAO CORRETOS COM A TABELA
'status' => "'1'",
'parcela' => "'$parcela'",
'forma_pagamento' => "'$forma'",
'identificador'         => "'$identificador'",

 );
// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);
$parcela++;
}

ONDE ESTÁ A O ERRO?
« Última modificação: Fevereiro 03, 2014, 12:19:01 pm por Jean Matos »
V8.1, V9
Windows Server 2012 Enterpriser 64 bits
SqlServer 2012 datacenter 64 bits
Sistema Integrado de Gestão de Construtoras WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Haroldo

  • Expert
  • *****
  • Mensagens: 6949
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Invalid argument supplied for foreach()
« Responder #1 Online: Fevereiro 03, 2014, 11:41:53 am »
provavelmente um dos seus selects não esta retornando valor, furando o foreach

Coloque em modo debug e analise os selects.



Jean Matos

  • Expert
  • *****
  • Mensagens: 985
    • Gestão de Construtoras
    • Email
Re:Invalid argument supplied for foreach()
« Responder #2 Online: Fevereiro 03, 2014, 12:03:33 pm »
Já estou rodando no debug...

(mssqlnative): SELECT idcontas, idcliente,convert(char(23),vencimento,121), valor, obs, login, forma_pagamento, identificador FROM dbo.contas_receber WHERE (idcontas = 12) 
12 2 2014-02-10 1000 jean.matos 3 89FD0F9209
(mssqlnative): SELECT   descricao,   quantidade FROM dbo.prazos_pagamento WHERE (idprazo = '6') 
00/30/60  tem que executar o $condicao=explode("/",$CondicaoPagto); só que nao esta dando retorno..  só retorna "Array"
3

as saidas estao corretas.
V8.1, V9
Windows Server 2012 Enterpriser 64 bits
SqlServer 2012 datacenter 64 bits
Sistema Integrado de Gestão de Construtoras WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Haroldo

  • Expert
  • *****
  • Mensagens: 6949
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Invalid argument supplied for foreach()
« Responder #3 Online: Fevereiro 03, 2014, 12:04:31 pm »
coloque após o explode:

var_dump($condicao);

Jean Matos

  • Expert
  • *****
  • Mensagens: 985
    • Gestão de Construtoras
    • Email
Re:Invalid argument supplied for foreach()
« Responder #4 Online: Fevereiro 03, 2014, 12:07:00 pm »
coloque após o explode:

var_dump($condicao);

Retorna : string(1) "6"
V8.1, V9
Windows Server 2012 Enterpriser 64 bits
SqlServer 2012 datacenter 64 bits
Sistema Integrado de Gestão de Construtoras WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Jean Matos

  • Expert
  • *****
  • Mensagens: 985
    • Gestão de Construtoras
    • Email
Re:Invalid argument supplied for foreach()
« Responder #5 Online: Fevereiro 03, 2014, 12:17:10 pm »
parece que resolvi..
o SC é meio tosco em algumas coisas..  ele confunde $condicao com {condicao}
daí mudei para {prazo}.. vualá...
Mas tb..hoje é segunda feira... o teor de sangue nas veias alcoólicas ainda está alto..
Obrigado Novamente.

V8.1, V9
Windows Server 2012 Enterpriser 64 bits
SqlServer 2012 datacenter 64 bits
Sistema Integrado de Gestão de Construtoras WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Jean Matos

  • Expert
  • *****
  • Mensagens: 985
    • Gestão de Construtoras
    • Email
Re:Invalid argument supplied for foreach()
« Responder #6 Online: Fevereiro 03, 2014, 12:20:15 pm »
parece que resolvi..
o SC é meio tosco em algumas coisas..  ele confunde $condicao com {condicao}
daí mudei para {prazo}.. vualá...
Mas tb..hoje é segunda feira... o teor de sangue nas veias alcoólicas ainda está alto..
Obrigado Novamente.
codigo completo e funcionando

//ESSE GRUPO DE CODIGO GERA AS PARCELAS



sc_lookup(dataset,"SELECT idcontas, idcliente,vencimento, valor, obs, login, forma_pagamento, identificador
FROM         dbo.contas_receber
WHERE     (idcontas = [conta])");

   $conta          = {dataset[0][0]};
   $cliente       = {dataset[0][1]};
   $valor          = {dataset[0][2]};
   $vence          = {dataset[0][3]};
   $obs          = {dataset[0][4]};
   $login         = {dataset[0][5]};
   $forma          = {dataset[0][6]};
   $identificador    = {dataset[0][7]};


   sc_lookup(ds_p,"SELECT   descricao,   quantidade
            FROM
                  dbo.prazos_pagamento
            WHERE
                  (idprazo = {prazo})");
$CondicaoPagto   = {ds_p[0][0]};
$numero         = {ds_p[0][1]};   
      
      
   $condicao=explode("/",$CondicaoPagto);
      $parcela = 1;

$lancamento = Date('Ymd G:i:s');
foreach($condicao as $dias)
   {
      
      $vencimentoF = sc_date_conv($vence,"ddmmaaaa","aaaammdd");
      $vencimento = sc_date($vencimentoF, "aaaammdd "," + ", $dias, 0, 0);
      $valorparcela = $valor / $numero;
      $insert_table  = 'contas_receber';      // Table name
      $insert_fields = array(   // Field list, add as many as needed
        'idcliente'       => "'$cliente'",
      
   
 );
// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);
$parcela++;
}
V8.1, V9
Windows Server 2012 Enterpriser 64 bits
SqlServer 2012 datacenter 64 bits
Sistema Integrado de Gestão de Construtoras WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775

Haroldo

  • Expert
  • *****
  • Mensagens: 6949
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:(RESOLVIDO) - Invalid argument supplied for foreach()
« Responder #7 Online: Fevereiro 03, 2014, 12:21:18 pm »
fica como sugestão:

toda variavel local que criar use um prefixo padrão, eu por exemplo usaria $_condicao.


Jean Matos

  • Expert
  • *****
  • Mensagens: 985
    • Gestão de Construtoras
    • Email
Re:(RESOLVIDO) - Invalid argument supplied for foreach()
« Responder #8 Online: Fevereiro 03, 2014, 12:22:47 pm »
fica como sugestão:

toda variavel local que criar use um prefixo padrão, eu por exemplo usaria $_condicao.

Correto... passarei a usar desta forma..Obrigado novamente.
TFA.
V8.1, V9
Windows Server 2012 Enterpriser 64 bits
SqlServer 2012 datacenter 64 bits
Sistema Integrado de Gestão de Construtoras WaveTOR - Sistema Integrado de Gestão de Construtoras
Teófilo Otoni - MG
(33)8824-2775