(RESOLVIDO) Resgatar ultimo registro e gravar dados em outra tabela

Ola pessoal, estou com um probleminha:

Minhas tabelas
Tabela com nome de edu_matricula com os seguintes campos, idmatricula, idcliente e idserie_turma_periodo, eu criei um forme atraves desta tabela.

Tabela edu_historico com os campos, idhistorico, idmatricula, idserie_disciplina.

Tabela edu_serie_disciplina com os campos, idserie_disciplina, iddisciplina e idserie_turma_periodo.

O que eu preciso:

Ao apertar o botão inserir o meu forme inserira um registro na tabela edu_matricula, pois o forme foi criado a partir desta tabela, porem eu preciso pegar o ultimo registro inserido que no meu caso é o campo idmatricula que é um campo chame e auto increment, depois disso irei alimentar a minha outra tabela (edu_historico) com este ultimo resgisto recuperado mais os valores que terei que pegar também da tabela edu_serie_disciplina.

Para isso fiz:
No evento onAfterInsert

//aqui eu teria que colocar o resultado da select em uma array, pois ele me retorna 3 valores (não sei como fazer)
sc_lookup(retorno_idserie_disciplina,"SELECT idserie_disciplina
FROM edu_serie_disciplina
WHERE idserie_turma_periodo = 212
");

aqui tinha que ser uma array = {retorno_idserie_disciplina[0][0]};

/**

  • Insert a record on another table
    */

// SQL statement parameters

$insert_table  = 'edu_historico';      // Table name
$insert_fields = array(   // Field list, add as many as needed
 	'idmatricula' => "'aqui o ultimo registro inserido que no vaso é o idmatricula'",
 	'idserie_disciplina' => "'{aqui a array da select que eu fiz no inicio deste codigo}'",
	);

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

sc_exec_sql($insert_sql);

a tabela edu_histórico deveria ficar assim caso o sc_lookup me retorne os 3 valores:

idhistorico - idmatricula - idserie_disciplina
1 1 25
2 1 29
3 1 35

Olha gente para pegar o ultimo registro eu usei no evento onAfterInsert o comando sc_lookup ordenado pelo campo que eu precisava usando junto o comando LIMIT 1 para retornar so 1 registro.

Exemplo:
sc_lookup(retorno_ultimo_idmatricula,"SELECT idmatricula FROM edu_matricula order by idmatricula desc limit 1 ");

Até aqui esta funcionando.

Agora tenho que ver como irei fazer o insert com a array

Aqui esta resolvido o problema de pegar registros de uma tabela e gravar em outra

//// aqui eu pego os idserie_disciplina para cadatrar todos na tabela edu_histórico/////
sc_lookup(retorno_idserie_disciplina,"SELECT idserie_disciplina, somente_boletim
FROM edu_serie_disciplina
WHERE idserie_turma_periodo = {idserie_turma_periodo}
");

if({retorno_idserie_disciplina}===false){
echo “Erro de acesso. Mensagem=” .{retorno_idserie_disciplina};
}elseif(empty({retorno_idserie_disciplina})){
echo “Comando Select não retornou dados”;
}else{
//aqui eu passo o numero de registro para a variavel $nregistros
$nregistros=count({retorno_idserie_disciplina});
// faço um loop da quantidade de registro encontrado
for($i=0;$i<$nregistros;$i++){
$vr_idmatricula = {retorno_ultimo_idmatricula[0][0]};
$vr_idseriedisciplina = {retorno_idserie_disciplina[$i][0]};
$insert_table = ‘edu_historico’; // Table name
$insert_fields = array(
‘idmatricula’ => “’$vr_idmatricula’”,
‘idserie_disciplina’ => “’$vr_idseriedisciplina’”,
);

	//aqui se a disciplina estiver cadastrada para somete_boletin ela não é incluida
	//na tabela historico
	if ({retorno_idserie_disciplina[$i][1]}<>"t"){
		// Insert record
		$insert_sql = 'INSERT INTO ' . $insert_table
					. ' ('   . implode(', ', array_keys($insert_fields))   . ')'
					. ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

		sc_exec_sql($insert_sql);
	}
}

}

Pronto funcionando.

Marculino, a sua solução para pegar o auto incremento irá funcionar desde que:

  • Não haja usuários acessando sua aplicação em paralelo ( gravando registros nesta tabela ao mesmo tempo);

sugiro usar o comando mysql_insert_id();

$ultimo_id = mysql_insert_id();