Autor Tópico: (RESOLVIDO) Resgatar ultimo registro e gravar dados em outra tabela  (Lida 2223 vezes)

Marculino

  • Iniciante
  • **
  • Mensagens: 59
    • Email
(RESOLVIDO) Resgatar ultimo registro e gravar dados em outra tabela
« Online: Outubro 03, 2012, 11:30:30 am »
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


« Última modificação: Outubro 17, 2012, 10:11:32 am por Marculino »

Marculino

  • Iniciante
  • **
  • Mensagens: 59
    • Email
Re:Resgatar ultimo registro e gravar dados em outra tabela
« Responder #1 Online: Outubro 05, 2012, 10:41:05 am »
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

Marculino

  • Iniciante
  • **
  • Mensagens: 59
    • Email
Re:Resgatar ultimo registro e gravar dados em outra tabela
« Responder #2 Online: Outubro 17, 2012, 10:09:34 am »
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.

Luiz Baião

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:(RESOLVIDO) Resgatar ultimo registro e gravar dados em outra tabela
« Responder #3 Online: Março 16, 2015, 05:03:01 pm »
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();
« Última modificação: Março 17, 2015, 05:19:48 pm por Luiz Baião »