Duvida - Inserindo registro em outra tabela

Olá a Todos, estou patinando num problema que pra muitos deve ser tranquilo - alguem pode me dar uma dica:

Seguinte, tenho um campo N x N que escolho alguns itens da lista do lado esquerdo, e salvo do lado direito - até aqui ok, tá fazendo.

Detalhe - este campo N x N - é um campo que criei adicionando campos, não usei a opção N x N, pois ela não atualiza automaticamente na tela em cascata.

Então ao visualizar os dados do campo(especialidade), ele está armazenando os códigos selecionados(em um vetor).
Desejo gravar esses códigos em uma tabela que contem apenas 2 campos

Idori (que vem do formulário principal, onde está inserido os campos NxN) e idesp (que é o código da especialidade)

ou seja
01 - 011023
01 - 012304

Verifiquei que no scriptcase até existe uma função pronta pra isso, porém não estou sabendo usar:

/**

  • Insert a record on another table
    */

// SQL statement parameters

$insert_table = ‘orientador_x_atuacao’; // Table name
$insert_fields = array( // Field list, add as many as needed
‘id’ => “idori”,
‘especialidade’ => “idesp”,
);

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

sc_exec_sql($insert_sql);

O que estou fazendo de errado, pois não vai, o que está faltando?

coloque em modo debug e encontra o erro facilmente.

mas adiantando:

$insert_fields = array( // Field list, add as many as needed
‘id’ => “‘idori’”,
‘especialidade’ => “‘idesp’”,
);

Obrigado Haroldo, vou ver aqui. Mas acho que sua sugestao do debug não se aplica muito, pois não dá erro. Só não insere os registros na tabela.

Olá Haroldo, consegui que ao clicar no primeiro ele insira na tabela, porém ao clicar no segundo item ele não insere, alguma diga para eu resolver esse problema?

Verifiquei usando display, que o array fica assim, ao clicar 3x: idori, idesp, idesp, idesp. Como faço para que ele fique idori, idesp, idori, idesp, idori, idesp.

O idori deverá ser fixo - obedecendo o id do formulario.

Segue o código de como está:

/**

  • Insert a record on another table
    */

// SQL statement parameters

$insert_table = ‘orientador_x_especialidade’; // Table name
$insert_fields = array( ‘idori’ => “’{id}’”,
‘idesp’ => “’{especialidade}’”, );

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

sc_exec_sql($insert_sql);

ao colocar em modo debug ele irá exibir o sql que será executado, cole o sql aqui.

se não mostrar é porque o código não esta sendo executado, aí depende de onde vc esta colocando esse código.

Então Haroldo o sql executado para montar o campo multi seleção é:

SELECT Concat(GA,a,c,e,d), Descricao FROM aux_areaatua WHERE CONCAT (GA,a) IN (’’) AND C > 0 AND e=0

Notei que não está sendo passada a variavel: {areaconh}

Este select monta o campo multi seleção

SELECT Concat(GA,a,c,e,d), Descricao
FROM aux_areaatua
WHERE CONCAT (GA,a) = {areaconh} AND C > 0 AND e=0

Agora minha dúvida é que o filtro where está correto e vindo com as informações corretas.

Neste campo multi seleção não tenho o id, mas pego o id do formulário {id} e a especialidade do campo multi seleçao {especialidade}

é isso mesmo ou to fazendo errado?

Detalhe esse sql que te passei é o do debug ok.

usei a linha $this->Db->debug = true;, no evento onScriptinit

Na verdade não sei.

Não sei que tipo de aplicações esta usando.
Não sei em quais eventos e qual o objetivo desses códigos.

Você falou em filtro. (É uma app de consulta?).

Esta usando um multselect em uma app de filtro e o campo não esta passando seu valor para a consulta?

Olá Haroldo, não é uma aplicação de consulta.

É um formulário normal com 3 campos multi seleção.

https://drive.google.com/open?id=0B1Yw-cptQkQUbndJLWhGbjc2SXc

se me passar um email, te mando o projeto e uma cópia do banco, aí vc pode ver direitinho. To ficando louco com isso cara.