[RESOLVIDO] - Onde está o erro desse insert?

Olá pessoal,

Estou tentando fazendo um insert dentro de um controle para um usuário ser criado ao clicar no botão salvar. Mas no campo que possui um select não está sendo passado para a variável. Segue o script:

$vlNome = {TxtNome}; $vlLogin = {TxtLogin}; $vlSenha = {TxtSenha}; $vlSenha = md5($vlSenha); $vlEmail = {TxtEmail}; [b]$vlUnidade = {ComboUnidade};[/b] //[b]$vlUnidade = [ComboUnidade];[/b] JÁ TENTEI ASSIM TAMBÉM

//Primeiro, consultamos o usuário que será executanda antes dos inserts.
$sql1 = “SELECT * FROM a002_usuarios “;
$sql1 .= “WHERE Usuario_Email = '”.$vlEmail.”’;”;

//Segundo, criamos o insert na tabela de usuários
$sql2 = “INSERT INTO a002_usuarios (Usuario_Nome, Usuario_Login, “;
$sql2 .= “Usuario_Email, Usuario_Senha, Usuario_Tipo) VALUES (”;
$sql2 .= “’”.$vlNome.”’, '”.$vlLogin."’, ‘".$vlEmail."’, ‘".$vlSenha."’, 2);";

//Terceiro, criamos a consulta do usuário para pegar o código
$sql3 = “SELECT Usuario_ID FROM a002_usuarios “;
$sql3 .= “WHERE Usuario_Login = '”.$vlLogin.”’ AND Usuario_Senha = '”.$vlSenha."’ ";

//Finalmente, vamos realizar os inserts.
sc_lookup(Ds, $sql1); //Fazemos a primeira consulta e verificamos se existem registros
if(!empty({Ds})){
//Se existir faremos o insert na segunda tabela: a003_usuariosunidades NESSE INSERT É ONDE ESTÁ O PROBLEMA
$vlUsuario = {Ds[0][0]};
if(empty({Ds})){
$sql = “INSERT INTO a003_usuariosunidades (Usuario_ID, Unidade_ID) VALUES (”.$vlUsuario.", “.$vlUnidade.”);";
sc_exec_sql($sql);
}
}else
{
//Se não existir faremos os inserts nas duas tabelas: a002_usuarios e a003_usuariosunidades
sc_exec_sql($sql2);
sc_lookup(Ds2, $sql3);

	//E, por último fazemos o insert da unidade AQUI É ONDE ESTÁ O PROBLEMA.
	$vlUsuario = {Ds2[0][0]};
	[b]$sql = "INSERT INTO a003_usuariosunidades (Usuario_ID, Unidade_ID) VALUES (".$vlUsuario.", ".$vlUnidade.");";[/b]
	sc_exec_sql($sql);
};</blockquote>

Grato,

Ilano

Olá, use aspas simples em vez de aspas duplas.

Cleidson,
Fiz as alterações naquelas linhas:

$vlNome = {TxtNome}; $vlLogin = {TxtLogin}; $vlSenha = {TxtSenha}; $vlSenha = md5($vlSenha); $vlEmail = {TxtEmail}; $vlUnidade = {ComboUnidade};

//Primeiro, consultamos o usuário que será executanda antes dos inserts.
$sql1 = “SELECT * FROM a002_usuarios “;
$sql1 .= “WHERE Usuario_Email = '”.$vlEmail.”’;”;

//Segundo, criamos o insert na tabela de usuários
$sql2 = “INSERT INTO a002_usuarios (Usuario_Nome, Usuario_Login, “;
$sql2 .= “Usuario_Email, Usuario_Senha, Usuario_Tipo) VALUES (”;
$sql2 .= “’”.$vlNome.”’, '”.$vlLogin."’, ‘".$vlEmail."’, ‘".$vlSenha."’, 2);";

//Terceiro, criamos a consulta do usuário para pegar o código
$sql3 = “SELECT Usuario_ID FROM a002_usuarios “;
$sql3 .= “WHERE Usuario_Login = '”.$vlLogin.”’ AND Usuario_Senha = '”.$vlSenha."’ ";

//Finalmente, vamos realizar os inserts.
sc_lookup(Ds, $sql1); //Fazemos a primeira consulta e verificamos se existem registros
if(!empty({Ds})){
//Se existir faremos o insert na segunda tabela: a003_usuariosunidades
$vlUsuario = {Ds[0][0]};
if(empty({Ds})){
$sql = ‘INSERT INTO a003_usuariosunidades (Usuario_ID, Unidade_ID) VALUES (’.$vlUsuario.’, ‘.$vlUnidade.’);’;
sc_exec_sql($sql);
}
}else
{
//Se não existir faremos os inserts nas duas tabelas: a002_usuarios e a003_usuariosunidades
sc_exec_sql($sql2);
sc_lookup(Ds2, $sql3);

	//E, por último fazemos o insert da unidade
	$vlUsuario = {Ds2[0][0]};
	$sql = 'INSERT INTO a003_usuariosunidades (Usuario_ID, Unidade_ID) VALUES ('.$vlUsuario.', '.$vlUnidade.');';
	sc_exec_sql($sql);
};</blockquote>

Mas retornou a mensagem abaixo:

Undefined variable: combounidade Erro ao acessar o banco de dados You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1 {SC_DB_ERROR_INI}View SQL{SC_DB_ERROR_MID}INSERT INTO a003_usuariosunidades (Usuario_ID, Unidade_ID) VALUES (2, );{SC_DB_ERROR_CLS}Close{SC_DB_ERROR_END}

Ilano, o problema é que a variável $vlUnidade, está vazio. Isso está no erro que vc nos mostrou, veja:
Undefined variable: combounidade
Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘)’ at line 1
{SC_DB_ERROR_INI}View SQL{SC_DB_ERROR_MID}INSERT INTO a003_usuariosunidades (Usuario_ID, Unidade_ID) VALUES (2, );{SC_DB_ERROR_CLS}Close{SC_DB_ERROR_END}

Olá Thyago Brasil,

Pois é, só que eu estou selecionando o registro lá no campo select (ComboUnidade) e mesmo assim não está vindo.

Em qual evento vc está colocando este código? O fato é que a variável está vazia

Cara, eu criei um botão do tipo PHP e inseri o código lá. Esqueci de informar que estou usando o SC 8, não sei se ajuda.

Então, vc terá que criar um evento Ajax para os campos que vc está informando e gravar o valor do campo em uma variável global. Para o combo, vc utiliza o evento ajax onChange. Para campos tipo texto, numero, vc usa o onBlur e para radio, vc usa o onClick.

E lá no inicio do seu código, ficaria assim:

$vlNome = [v_TxtNome];
$vlLogin = [v_TxtLogin];
$vlSenha = [v_TxtSenha];
$vlSenha = md5($vlSenha);
$vlEmail = [v_TxtEmail];
$vlUnidade = [v_ComboUnidade];
//$vlUnidade = [v_ComboUnidade]; 

Cara, como não tenho experiência em SC e PHP, vou te fazer uma pergunta idiota:
Meu código continua da mesma forma?

Porque estou tentando apenas vincular unidade e usuário para um usuário já criado e não está rolando.

Então Ilano, o seu código vc só muda o inicio que te mostrei acima.

Nos eventos de cada campo vc vai fazer o seguinte:

Por exemplo:

Para o campo {ComboUnidade}, vc vai fazer o seguinte no evento Ajax de cada campo:

[v_ComboUnidade] = {ComboUnidade};

Para o campo {TxtEmail}:

[v_TxtEmail] = {TxtEmail};

E assim por diante…

Valeu Thyagão, deu tudo certo!

Muito obrigado meu amigo.

Opa, precisando estamos aí!!

Coloque seu tópico como resolvido.

Abraço!