Autor Tópico: [RESOLVIDO] Eventos não processam Foreach  (Lida 978 vezes)

Thiago Martos

  • Iniciante
  • **
  • Mensagens: 70
  • Only god knows how this code works
    • TM SOLUÇÕES
    • Email
[RESOLVIDO] Eventos não processam Foreach
« Online: Julho 11, 2014, 03:33:49 pm »
Boa Tarde!

Tenho um formulário que carrego via ajax de um select um checkbox (segue imagem abaixo),
http://sgfranquia.com.br/_portal/pedagogico/temp/tela_insercao.png
Obs: Escolhe-se o Curso Padrão e seleciona os módulos que quer daquele curso, e depois clica em Criar Turma.

O problema é que preciso inserir um registro para cada checkbox marcado, já faço isso em outro formulário através de um botão e funciona normalmente, e preciso fazer nesse por eventos do Insert para aproveitar a validação do scriptcase dos campos,
Segue o código:
Código: [Selecionar]
...
foreach({modulos_padrao} as &$value){
$_sql_insert_mod = "INSERT INTO TurmaModulos VALUES(
  NULL,
'$id_turma',
'$value',
NULL,
NULL,
  '{IdInstrutor}',
  '{Status}',
NULL,
NULL
)";

sc_exec_sql($_sql_insert_mod);
...
Quando colocado o código em algum evento (BeforeInsert, AfterInsert, OnValidadeSucess) ocorre um erro por conta do Foreach
Código: [Selecionar]
Invalid argument supplied for foreach()Mas quando colocado em um botão funciona normalmente,

Para não parar o desenvolvimento coloquei manualmente o insert do formulario no mesmo botão, abrindo mão de validações.

Alguém sabe por que isso está ocorrendo?

Desde já agradeço!
« Última modificação: Julho 14, 2014, 03:11:02 pm por Thiago Martos »
Desenvolvimento de APIs, extensões e sistemas robustos
Skype: thiago.martos
E-mail: thiago@thiagomartos.com
www.tmsolucoes.net

Willian Fernando

  • Expert
  • *****
  • Mensagens: 1148
  • .....
    • Email
Re:Eventos não processam Foreach
« Responder #1 Online: Julho 11, 2014, 04:09:43 pm »
Thiago...
O campo checkbox guarda todos us valores juntos entre ";".
Você precisa usar o explode() para criar um array separando os valores e depois fazer o foreach.

Haroldo

  • Expert
  • *****
  • Mensagens: 6264
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Eventos não processam Foreach
« Responder #2 Online: Julho 11, 2014, 08:19:45 pm »
Coloque em modo debug e analise o codigo.

Thiago Martos

  • Iniciante
  • **
  • Mensagens: 70
  • Only god knows how this code works
    • TM SOLUÇÕES
    • Email
Re:Eventos não processam Foreach
« Responder #3 Online: Julho 14, 2014, 02:26:59 pm »
Boa tarde!

Eu não utilizo separador nos checkbox, até por questão dele não ser gravado no banco, utilizo apenas como auxiliar no procedimento.
Já havia colocado em modo debug e nessa instancia não aparece pois ele é na execução.

Eu estou utilizando por botão e funciona normalmente, o problema é que quando utilizo o botão de Editar/Inserir do SC ele da esse erro, logo penso que o erro não está no código e sim em alguma configuração ou método do SC.

Mais alguma sugestão do que possa ser?

Att.
Desenvolvimento de APIs, extensões e sistemas robustos
Skype: thiago.martos
E-mail: thiago@thiagomartos.com
www.tmsolucoes.net

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Eventos não processam Foreach
« Responder #4 Online: Julho 14, 2014, 02:39:50 pm »
Cara se não me engano quando fazemos um checkbox manual no SC ao submeter o form o campo obrigatoriamente tem uma separador então você terá que dar um explode nesse campo:

$modulos = explode({modulos_padrao});

E aí então usar o foreach com o $modulos.

Thiago Martos

  • Iniciante
  • **
  • Mensagens: 70
  • Only god knows how this code works
    • TM SOLUÇÕES
    • Email
[RESOLVIDO] Re:Eventos não processam Foreach
« Responder #5 Online: Julho 14, 2014, 03:10:33 pm »
Resolvido...
Exatamente como você disse Saulo, coloquei um explode e funcionou com o delimitador, nunca ia imaginar que ele faria isso com o objeto no submeter.

Código: [Selecionar]
...
$modulos = explode(';', {modulos_padrao});

foreach($modulos as &$value){
...

Obrigado novamente pela ajuda de todos!
Desenvolvimento de APIs, extensões e sistemas robustos
Skype: thiago.martos
E-mail: thiago@thiagomartos.com
www.tmsolucoes.net