Jump to content
Fórum Script Brasil
  • 0

Como Validar Campo E Gravar Em Bd


bylas
 Share

Question

olá pessoal, tenho várias dúvidas sobre códigos da linguagem, mas mesmo assim atraves consegui fazer um simples formulário de cadastro gravando as informações em um bd access. Mas o prolema se faz quando utilizo um script para checar o compo CPF e validar o mesmo, logo apos ele é submetido a gravação não se faz. Antes vir ate aqui pesquizei em vários fóruns, mas sem questionamentos ou publicar, mas espero que alguém possa me ajudar ou pelo menos indicar onde posso encontrar ajuda.

ps: foram retirados os ///onSubmit="return validaCPF()" // name="validacao" // on cpf value="" return true; tal modo de não ler o js e enviar os dados para o bd normalmente.

<<formulario.asp>>>

<HTML>
<HEAD>
<html>
<style type="text/css">
<!--
.style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
-->
</style>
<head>
<title>Valida CPF</title>
<script language="Javascript">
function validaCPF() {
  cpf = document.validacao.CPF.value;
  valor = true;
  erro = new String;
  if (cpf.length < 11) erro += "são necessarios 11 digitos para verificacao do CPF! \n\n"; 
  var nonNumbers = /\D/;
  if (nonNumbers.test(cpf)) erro += "A verificacao de CPF suporta apenas numeros! \n\n"; 
  if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
    erro += "Numero de CPF invalido!"
  }
  var a = [];
  var b = new Number;
  var c = 11;
  for (i=0; i<11; i++){
  a[i] = cpf.charAt(i);
  if (i < 9) b += (a[i] *  --c);
  }
  if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
  b = 0;
  c = 11;
  for (y=0; y<10; y++) b += (a[y] *  c--); 
  if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
  if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
  erro +="Digito verificador com problema!";
  }
  if (erro.length > 0){
  alert(erro);
  return false;
  }

}
///onSubmit="return validaCPF()"
//  name="validacao"
// on cpf value=""  return true;
</script>
<TITLE>Inclusão de Cadastro- Examplo</TITLE>
</HEAD>
<BODY>
<H1 class="style1">Cadastro </H1>

<form method="post" action="incluir.asp">
<TABLE width="489" align="center">
  <TR><TD><span class="style1">Nome:</span></TD>
      <TD><INPUT NAME="Nome" type="text" id="Nome" SIZE=50></TD></TR>
  <TR><TD><span class="style1">CPF:</span></TD>
     <TD><input name="CPF" type="text" id="CPF" size="50" maxlength="11"></TD></TR> 
      <TR>
        <TD><span class="style1">Email:</span></TD>
        <TD><input name="Email" type="text" id="Email" size="50" maxlength="11"></TD></TR>
  <TR><TD><span class="style1">Endereço:</span></TD>
      <TD><INPUT NAME="Endereco" type="text" id="Endereco" SIZE=50></TD></TR>
  <TR><TD><span class="style1">Cidade:</span></TD>
      <TD><INPUT NAME="Cidade" type="text" id="Cidade" SIZE=50></TD></TR>
  <TR><TD><span class="style1">Estado:</span></TD>
      <TD><INPUT NAME="Estado" type="text" id="Estado" SIZE=50></TD></TR>
  <TR><TD><span class="style1">Cep:</span></TD>
      <TD><INPUT NAME="Cep" type="text" id="Cep" SIZE=50></TD></TR>
    <TR><TD><span class="style1">Mensagem:</span></TD>  
  <TD> <textarea name="Msg" cols="50" rows="8" class="formbutton" id="Msg" input ></textarea></TD></TR>
</TABLE>
<BR><INPUT TYPE="SUBMIT" VALUE="Salvar Registro">
<INPUT TYPE="RESET" VALUE="Limpar Campos">
<BR><BR><A HREF="index.htm">Abandonar edição e retornar a pagina principal</A>
</FORM>
</BODY>
</HTML>
<<incluir.asp>> que recebe os dados e grava no bd access
<HTML>
<HEAD>
<TITLE>Inclusão no Cadastro</TITLE>
</HEAD>
<BODY>
<H1> Incluindo um cadastro em  TESTE </H1>
<%

Dim con
Dim rst
Const adOpenKeyset = 1
Const adLockOptimistic = 3

' Cria os objetos
Set con = Server.CreateObject("ADODB.Connection")
Set rst = Server.CreateObject("ADODB.Recordset")

' Abre a conexão com o banco de dados cadastro.mdb
con.Open "DBQ=D:\InetPub\meusite\private\database\cadastro.mdb;DRIVER={Microsoft Access Driver (*.mdb)}"

' Cria um Recordset do tipo keyset baseado na tabela clientes
' usando o bloqueio otimista
rst.Open "SELECT * FROM clientes", con, adOpenKeyset, adLockOptimistic

' Cria um registro em branco
rst.AddNew

  ' Recebe os dados do formulário e os atribui aos campos da tabela cliente
  rst("Nome")= Request.Form("Nome")
  rst("Email")= Request.Form("Email")
  rst("CPF")= Request.Form("CPF")
  rst("Endereco")= Request.Form("Endereco")
  rst("Cidade")= Request.Form("Cidade")
  rst("Estado")= Request.Form("Estado")
  rst("Cep")= Request.Form("Cep")
  rst("Msg")= Request.Form("Msg")



' Salva o registro 
rst.Update

Response.Write "<B>Registro salvo com sucesso !</B>"

rst.Close
con.Close
%>
<BR><A HREF="obrigado.htm">Retorna a página principal</A>
</BODY>
</HTML>

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

isso parece mais problema de ASP do que javascript, mas vamos fazer um teste, no arquivo incluir.asp no trecho a seguir adicione o que está em negrito:

<HTML>

<HEAD>

<TITLE>Inclusão no Cadastro</TITLE>

</HEAD>

<BODY>

<H1> Incluindo um cadastro em TESTE </H1>

<%

response.write request.form("nome") & "<br>

response.write request.form("email") & "<br>

response.write request.form("cpf") & "<br>

response.write request.form("endereco") & "<br>

response.write request.form("cidade") & "<br>

response.write request.form("estado") & "<br>

response.write request.form("cep") & "<br>

response.write request.form("msg")

response.end

Dim con

Dim rst

Const adOpenKeyset = 1

Const adLockOptimistic = 3

veja se todos os campos estão sendo mostrados

Link to comment
Share on other sites

  • 0

lá no bd access o campo cpf estava como numérico, alterei para texto e fiz uma consulta que converte em formato numérico e os dados começaram a gravar depois da checagem do CPF.

obrigado!!!

o pior que estavam. quando retirava a chegagem do CPF o formulario enviva normalmente para o banco. descobri que no bd que estava errado. Corrigi mas agora estou com outra batata!!!

não fiz tratamento de CPF já cadastrado e quando o cidadão grava e envia a mensagem ele não pode enviar 2 vezes a mesma informação, pois o foco é de apenas uma pessoa enviando uma mensagem!

"Microsoft OLE DB Provider for ODBC Drivers erro '80040e2f'

[Microsoft][Driver ODBC para Microsoft Access] As alterações solicitadas para a tabela não foram satisfatórias já que criariam valores duplicados no índice, chave primária ou relação. Altere os dados no campo ou campos que contêm os dados duplicados, remova o índice ou redefina o índice para possibilitar entradas duplicadas e tente novamente.

Como disse, sou iniciante por ficar vendo alguns programas, sites, resolvi entender a coisa! Tenho ciencia que tenho que estudar muito, maspor enquanto vou tentando decifrar os enigmas!!!

tks!

/incluir.asp, line 50

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.7k
×
×
  • Create New...