Error ao fazer explode no Update

Pessoal eu tenho esse código em BeforeInsert:

$eventos = explode(";", {evt_doc});
$count = count($eventos);

for ($i=0; $i<$count; $i++) {
	
	$insert_table  = 'evt_doc'; // Nome da Tabela
	$insert_fields = array(  // List
	     'DOC001_CODE' => "'". [code_kb] ."'",
	     'EVT004_ID' => "'". $eventos[$i] ."'",
 	);
	
	$insert_sql = 'INSERT INTO ' . $insert_table
    	. ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    	. ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

	sc_exec_sql($insert_sql);
	
}

Que cadastra vários eventos para o mesmo documento, de acordo com os eventos escolhidos pelo cliente em um Double Select, até ai tudo bem, mas quando eu fui colocar o código no BeforeUpdate:

$eventos = explode(";", $evt_doc);
$count = count($eventos);

for ($i=0; $i<$count; $i++) {
	
	if ($eventos[$i] !== '') {
		// SQL 
		$check_table = 'evt_doc';    // Tebela
		$check_where = "DOC001_CODE = '" . {DOC001_CODE} ."'"; // Where
		$check_and   = "EVT004_ID = '" . $eventos[$i] ."'";
		// VERIFICA
		$check_sql = 'SELECT *'
	   		. ' FROM '  . $check_table
	   		. ' WHERE ' . $check_where
	   		. ' AND '   . $check_and;
		sc_select(dataset, $check_sql);

		if (false == {dataset})
		{
		    sc_error_message("Sem acesso ao banco de dados!");
		}	
		elseif ({dataset}->EOF) // Se não existir ainda. 
		{
			$delete_sql = "DELETE FROM evt_doc WHERE DOC001_CODE =  '". {DOC001_CODE} ."'";
			sc_exec_sql($delete_sql);
			
			$insert_table  = 'evt_doc'; // Tabela
			$insert_fields = array(  // Lista
			     'DOC001_CODE' => "'". {DOC001_CODE} ."'",
			     'EVT004_ID' => "'". $eventos[$i] ."'",
		 	);
			//  Inserção.
			$insert_sql = 'INSERT INTO ' . $insert_table
	    		. ' ('   . implode(', ', array_keys($insert_fields))   . ')'
		    	. ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

			sc_exec_sql($insert_sql);
		}
	}
}

Até ai tudo bem ele faz até o primeiro FOR. Só que da esse erro na tela:

E não faz a inclusão certinha da forma que eu quero. O que me da raiva é que esse código fora do scriptCase funciona.

Não seria:

for ($i=0; $i<$count-1; $i++) {…

Por que não utiliza o foreach?

Sim Haroldo é $count-1, com for ou com foreach da o mesmo erro, meu problema está no momento que eu transformo o valor do double select em um array, com o explode, exemplo se eu escolhi 4 eventos, o valor fica: 1;2;3;4 eu faço um explode(";", “1;2;3;4”), e me retorna um array (1,2,3,4) no INSERT funciona direitinho, mas no update da esse error ai.

Porque não faz o insert baseado no select.

Acredito que o erro esta na primeira linha :

$eventos = explode(";", $evt_doc);
$evt_doc não foi declarado.

No primeiro código você utiliza:
$eventos = explode(";", {evt_doc});

Sim eu pensei que seria esse o problema mas o scriptCase interpreta $evt_doc igual {evt_doc}, da error com qualquer um dos 2.

O que me intriga mais é o erro que da primeiro:

Undefined variable: new --> Eu não tenho nenhuma variável sem definir ainda mais uma $new.

Depois:

Empty delimiter na função explode, está lá o delimitador “;”.

Tenta ai fazer um explode no BeforeUdate se você puder.

vlw Haroldo por ajudar.

{evt_doc} não é uma campo do SC?

É sim um campo que eu criei.

Modificado:

Todos os campos do scriptCase do tipo {campo} são uma variável $campo. Pelo menos todos os testes que eu fiz se comportam igual.

Não são Robert.
Um único campo SC é um conjunto de variáveis locais e em sessão, atributos de um objeto e funções.

Da mesma forma {evt_doc} não funciona. =/

Coloca em modo debug exibindo janela output ajax

Coloca $_evt_doc={evt_doc};
print_r($_evt_doc);

verifica o que o print mostra.

Apareceu isso Haroldo:

1;2;3;4Transactions not supported in ‘mysql’ driver. Use ‘mysqlt’ or ‘mysqli’ driver

Com os 4 selecionados.

o erro seguinte, seleciona MySql Tranction na sua conexão.

o explode tem que funcionar com o separador “;”.

Nada Haroldo, vlw pela tentativa. Vou resolver esse código de outra forma é o jeito.

Eu fui no código fonte e identifiquei os erros:

Undefined variable: new
Script: C:\Program Files (x86)\NetMake\v6\wwwroot\scriptcase\app\matrix\form_doc001\form_doc001_apl.php (2275)

2268|    function sc_clear_mask($value, $chars) 
2269|    { 
2270|        for ($i = 0; $i < strlen($value); $i++) 
2271|        { 
2272|            if (false === strpos($chars, $value[$i])) 
2273|            { 
--------->2274|                $new .= $value[$i]; 
2275|            } 
2276|        } 
2277| 
2278|        return $new; 
2279|    }

explode() [function.explode]: Empty delimiter
Script: C:\Program Files (x86)\NetMake\v6\wwwroot\scriptcase\app\matrix\form_doc001\form_doc001_apl.php (2633)

2630|           $this->NM_ajax_info['fldList']['evt_doc'] = array( 
2631|                'type'    => 'duplosel', 
---------->2632|                'valList' => explode('', $this->evt_doc), 
2633|                'optList' => $aNewLookup, 
2634|               ); 

No meu código está:
$eventos = explode(";", {evt_doc});
Valor de {evt_doc} = 1;2;3;4

in_array() expects parameter 2 to be array, boolean given
Script: C:\Program Files (x86)\NetMake\v6\wwwroot\scriptcase\app\matrix\form_doc001\form_doc001_apl.php (2640)

2639|               if (in_array(key($aValData), $this->NM_ajax_info['fldList']['evt_doc']['valList'])) 
2640|               { 
2641|                   $aLabelTemp[key($aValData)] = current($aValData); 
2642|               } 

Invalid argument supplied for foreach()
Script: C:\Program Files (x86)\NetMake\v6\wwwroot\scriptcase\app\matrix\form_doc001\form_doc001_apl.php (2645)

2644|           foreach ($this->NM_ajax_info['fldList']['evt_doc']['valList'] as $iIndex => $sValue) 
2645|           { 
2646|               $aLabel[$iIndex] = (isset($aLabelTemp[$sValue])) ? $aLabelTemp[$sValue] : $sValue; 
2647|           }

Creio que resolvendo os 2 primeiros problemas se resolvam os outros. Alguém tem alguma ideia?

É o meu código ou SC está gerando errado?

Se for o SC é arquivo corrompido?

Grato

esse é um bug antigo do scriptcase, os desenvolvedores esqueceram de iniciar a variável, o erro só vai parar se tirar as mascaras dos campos desse formulário