Ir para conteúdo

POWERED BY:

Arquivado

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

gabrielsor

[Resolvido] Erro, cadastrando 2 vezes o mesmo registro

Recommended Posts

Salve galera, tenho uma página de cadastro aonde o usuário escolhe uma determinada quantidade no combobox e a partir dessa quantidade ele gera campos de texto. Nessa página existem outros campos. Essa página deverá ser enviada para uma outra página "cadastro.asp", nela deverá ser executada o registro desses campos no bd, porém, os campos criados em relação à quantidade escolhida deve ser inseridos como outro registro no banco...

confuso né...aqui vai um exemplo:

 

 

FORMULÁRIO

Quantidade escolhida: 2

 

Campo gerado 1

campo gerado 2

campo nome

campo idade

 

CADASTRO (como devem ser inseridos esses dados)

nome, idade, dado_do_campo_gerado 1

nome, idade, dado_do_campo_gerado 2

 

 

até ai sem problemas, fiz um for na página de cadastro e ele insere direitinho, porém, mesmo escolhendo para gerar 1 único campo, ele duplica os registros no banco, supondo que eu escolha para inserir 10 campos, ele gera 20 registros, a duplicação independe da quantidade de campos, não sei o que está acontecendo, vou postar os codigos tanto do form quanto do cadastro.asp, se alguém achar aonde está o erro...

 

CÓDIGO DO FORM


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem Título</title>
<style type="text/css">
<!--
.style3 {font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; color: #FFFFFF; }
.style12 {font-size: 10px; font-weight: bold; }
.style14 {font-family: Verdana, Arial, Helvetica, sans-serif}
.style15 {	color: #FFFFFF;
	font-size: 12px;
}
.style17 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <label> </label>
  <table width="560" border="0">
    <tr>
      <td colspan="2" bgcolor="#CC0000"><span class="style3">Insira a quantidade de produtos IGUAIS que deseja registrar</span></td>
    </tr>
    <tr>
      <td width="45" bgcolor="#F0F0F0"><select name="campos" id="campos">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
        <option>11</option>
        <option>12</option>
        <option>13</option>
        <option>14</option>
        <option>15</option>
        <option>16</option>
        <option>17</option>
        <option>18</option>
        <option>19</option>
        <option>20</option>
        <option>21</option>
        <option>22</option>
        <option>23</option>
        <option>24</option>
        <option>25</option>
        <option>26</option>
        <option>27</option>
        <option>28</option>
        <option>29</option>
        <option>30</option>
      </select></td>
      <td width="505" bgcolor="#F0F0F0"><input type="submit" name="envia" id="envia" value="OK" /></td>
    </tr>
  </table>
  <label><br />
  </label>
  <table width="560" border="0">
    <tr>
      <td colspan="2" bgcolor="#CC0000"><span class="style14"> <span class="style15">
        <label></label>
        <strong>Cadastrar </strong></span></span></td>
    </tr>
    <tr>
      <td width="211" bgcolor="#F0F0F0"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Empresa</font></span></td>
      <td width="339" bgcolor="#F0F0F0"><label>
        <input name="empresa" type="text" id="empresa" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Número da Nota</font></span></td>
      <td bgcolor="#FBFBFB"><label>
        <input name="nota" type="text" id="nota" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#F0F0F0"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Instrumento</font></span></td>
      <td bgcolor="#F0F0F0"><label>
        <input name="instrumento" type="text" id="instrumento" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Marca</font></span></td>
      <td bgcolor="#FBFBFB"><label>
        <input name="marca" type="text" id="marca" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#F0F0F0"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Capacidade x Resolução </font></span></td>
      <td bgcolor="#F0F0F0"><label>
        <input name="capacidade" type="text" id="capacidade" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Modelo</font></span></td>
      <td bgcolor="#FBFBFB"><label>
        <input name="modelo" type="text" id="modelo" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#F0F0F0"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Acessório</font></span></td>
      <td bgcolor="#F0F0F0"><label>
        <input name="acessorio" type="text" id="acessorio" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Patrimônio</font></span></td>
      <td bgcolor="#FBFBFB"><label>
      <%
Dim Campos : Campos = CInt(Request.Form("campos"))
Dim Numeros : Numeros = CInt(Numeros)

If IsEmpty(Request.Form) Then
        Numeros = 1
Else
        For Numeros = 1 to Campos
                Response.Write("<input type='text' name='" & Numeros & "P'/>" & "<br>")
		Next
End If

%>
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#F0F0F0"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Número de Fabricação </font></span></td>
      <td bgcolor="#F0F0F0">
	  <%


If IsEmpty(Request.Form) Then
        Numeros = 1
Else
        For Numeros = 1 to Campos
                Response.Write("<input type='text' name='" & Numeros & "N'/>" & "<br>")
        Next
End If

%></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"><span class="style17">Valor Uniário </span></td>
      <td bgcolor="#FBFBFB"><label>
        <input name="vunitario" type="text" id="vunitario" />
      </label></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"><span class="style12"><font face="Verdana, Arial, Helvetica, sans-serif">Quantidade</font></span></td>
      <td bgcolor="#FBFBFB"><input name="quantidade" readonly type="text" id="quantidade" value = <%=Campos%> /></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"> </td>
      <td bgcolor="#FBFBFB"><input type="submit" name="Submit" value="Enviar" onClick="enviar()"/></td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"> </td>
      <td bgcolor="#FBFBFB"> </td>
    </tr>
    <tr>
      <td bgcolor="#FBFBFB"> </td>
      <td bgcolor="#FBFBFB"> </td>
    </tr>
  </table>
  <label><br />
  </label>
  <p>
  
  <p>
  <label></label>
</form>

<script>
function enviar(){
        document.getElementById("form1").action="cadastro.asp";
        document.getElementById("form1").submit();
}

</script>
</body>
</html>

CÓDIGO DO CADASTRAR.ASP

<%
Dim Conexao
Set Conexao = Server.CreateObject("ADODB.Connection") 
Conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.MapPath("db\banco.mdb") 


' Agora vou usar o comando Request.form para recuperar os valores digitados no formulario.htm.
' Observe que na recuperação da data, uso a função criada acima.

empresa= Request.Form("empresa")
nota = Request.Form("nota")
instrumento = Request.Form("instrumento")
marca = Request.Form("marca")
capacidade = Request.Form("capacidade")
modelo = Request.Form("modelo")
acessorio = Request.Form("acessorio")
vunitario = Request.Form("vunitario")
quantidade = Request.Form("quantidade")
mesb=month(date())
ano=YEAR(DATE)
dia= day(date)



if mesb=1 then    
mes="01"
end if
if mesb=2 then    
mes="02"
end if
if mesb=3 then    
mes="03"
end if
if mesb=4 then    
mes="04"
end if
if mesb=5 then    
mes="05"
end if
if mesb=6 then    
mes="06"
end if
if mesb=7 then    
mes="07"
end if
if mesb=8 then    
mes="08"
end if
if mesb=9 then    
mes="09"
end if
if mesb=10 then    
mes="10"
end if
if mesb=11 then    
mes="11"
end if
if mesb=12 then    
mes="12"
end if

ddata=dia&"/"&mes&"/"&ano

' Aqui vou gravar os dados recuperados na tabela clientes.

For i = 1 to quantidade

Conexao.Execute "insert into Cadastro(empresa,nota, instrumento, marca, capacidade, modelo, acessorio, quantidade, vunitario) values('" & empresa & "', '" & nota & "', '" & instrumento & "', '" & marca & "', '" & capacidade & "', '" & modelo & "', '" & acessorio & "', '" & quantidade & "', '" & vunitario & "')"

i = i + 1
Next

Conexao.Close
Set Conexao = Nothing
response.Redirect("exibe.asp")
%>

lembrando que a página cadastro.asp ainda não pega os valores dos campos gerados atraves da quantidade e nem os cadastra

 

Bom, é isso ai pessoal, se alguém puder me ajudar a achar aonde está o erro...

Desde já agradeço... B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire essa linha de code e teste

 

i = i + 1

Continua Igual, eu to achando que isso ta acontecendo pq no form tem 2 botôes...entao ele ta enviando 2x os dados, posso estar falando besteira, mais sla...

 

Já testei até sem o For na página de cadastro para registrar apenas 1x e ele duplica do msm jeito...não sei mais o que fazer... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste dando um response.write na variavel quantidade para saber qual o valor esta vindo

 

quantidade = Request.Form("quantidade")
Response.Write(quantidade)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste dando um response.write na variavel quantidade para saber qual o valor esta vindo

 

quantidade = Request.Form("quantidade")
Response.Write(quantidade)

Ele traz exatamente o que eu escolher no combobox...se eu escolher 1 aparece 1, se eu escolher 2 aparece 2...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o botão é de Submit não é preciso criar um JS para submeter, caso queira usar o JS use apenas um botão "comum".

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente ele esta sendo enviado duas vezes pela função

 

function enviar(){
        document.getElementById("form1").action="cadastro.asp";
        document.getElementById("form1").submit();

um no action e um submit, deixe apenas o document.getElementById("form1").action="cadastro.asp";

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente ele esta sendo enviado duas vezes pela função

 

function enviar(){
        document.getElementById("form1").action="cadastro.asp";
        document.getElementById("form1").submit();

um no action e um submit, deixe apenas o document.getElementById("form1").action="cadastro.asp";

 

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

xanburzum, me salvando mais uma vez...kkkk

Era exatamente isso, foi um detalhe que passou batido...

vlww pela ajuda de todoss!!! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maravilha amigo...

 

 

 

qualquer coisa, posta ae...

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.