Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Prado

Insert duplicados sem motivos

Recommended Posts

Boa tarde a todosFiz o script abaixo para inserir registros referentes a parcelas em meu banco de dados Mysql.a tabela par como dita no script possui os seguintes camposnum_parcela = intvencimento = datevalor = doublepara testar executei o script atual com a tabela vazia com os valores do script abaixo:<?phpinclude 'conecta.php';include 'executa.php';$valorTotal = 9720.00;$qtdParcelas = 2;$vencimentoInicial = '2006-06-10';$valorParcela = bcdiv( $valorTotal, $qtdParcelas, 2);for ($numParcela=1; ($numParcela <= $qtdParcelas); $numParcela++) {$sql = "INSERT INTO par (num_parcela, vencimento, valor) VALUES($numParcela,(select interval (select ($numParcela-1)) month + '$vencimentoInicial'), $valorParcela);"; $res = executa($id,$sql);}?>porém, o resultado da minha table par ficou a seguintenum_par vencimento valor1 2006-06-10 4860.002 2006-07-10 4860.001 2006-06-10 4860.002 2006-07-10 4860.00ou seja, o script fez duas vezes os inserts, alguém sabe me explicar porque isso acontece, onde eu estou errando no programa???Agradeço a cooperação de todos e qualquer dúvida, se eu puder ajudar, estou aqui....Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tive problema semelhante.

 

Eu fiz um form no qual deveria ser inserido dados na tabela referente ao form e inserir dados em outra tabela no qual pega dados do form sem utilizar o imput do form.

 

Funciona da seguinte forma:

 

Se o INSERT estiver fora do if ele ira executar a função quando o navegador "ler" a página e quando for executado o imput de inserir do form ele ira ler novamente a pagina no qual ira executar novamente a função de insert.

 

Limitando a função abaixo do IF ele so ira executar quando for acionado o Insert do form chamando tambem sua função, limitando-o a um unico regsitro.

 

Exemplo dentro do if:

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {$InsertlogSQL =  sprintf("INSERT INTO log_historico (log_date, log_usuario, log_processo, log_desc) VALUES ('".$dataprocesso."', '".$login."', '".$num_processo."', %s)",   GetSQLValueString($_POST['procs_desc_assunto'], "text"));mysql_select_db($database_con_mtc_protocolo, $con_mtc_protocolo);  $Result = mysql_query($InsertlogSQL, $con_mtc_protocolo) or die(mysql_error());    $insertSQL = sprintf("INSERT INTO processos (procs_num, procs_cc_requerente, procs_secretaria_requerente, procs_setor_requerente, procs_login_requerente, procs_data_hora_entrada, procs_desc_assunto, procs_situacao, procs_flag, procs_secretaria_origem, procs_setor_origem, procs_secretaria_destino, procs_setor_destino, procs_data_hora_destino, procs_login_destino) VALUES ('".$num_processo."', %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",					   GetSQLValueString($_POST['procs_cc_requerente'], "text"),					   GetSQLValueString($_POST['procs_secretaria_requerente'], "text"),resto do codigo do form...

Fora do if no qual será executado 2x:

 

$InsertlogSQL =  sprintf("INSERT INTO log_historico (log_date, log_usuario, log_processo, log_desc) VALUES ('".$dataprocesso."', '".$login."', '".$num_processo."', %s)",   GetSQLValueString($_POST['procs_desc_assunto'], "text"));if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {mysql_select_db($database_con_mtc_protocolo, $con_mtc_protocolo);  $Result = mysql_query($InsertlogSQL, $con_mtc_protocolo) or die(mysql_error());    $insertSQL = sprintf("INSERT INTO processos (procs_num, procs_cc_requerente, procs_secretaria_requerente, procs_setor_requerente, procs_login_requerente, procs_data_hora_entrada, procs_desc_assunto, procs_situacao, procs_flag, procs_secretaria_origem, procs_setor_origem, procs_secretaria_destino, procs_setor_destino, procs_data_hora_destino, procs_login_destino) VALUES ('".$num_processo."', %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",					   GetSQLValueString($_POST['procs_cc_requerente'], "text"),					   GetSQLValueString($_POST['procs_secretaria_requerente'], "text"),resto do codigo do form...

espero ter ajudado, talvez nao seja isso mas... dúvidas pos aê.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem sei se é o caso, mas você está usando o IE7? Já vi casos em que o IE7 submete um form duas vezes. Enquanto no IE6, funciona normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu gente!!! Achei o problema!!! Na verdade o script está tudo ok, o que está com problema é o meu debugger do PHP Designer 2006, pois fiz o teste fora dele (com o IE6, o OPERA 9 e o Firefox 1.5.4) e eles fazem somente um Insert!!!!Valeu pela Ajuda Pessoal!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.