Ir para conteúdo
Fórum Script Brasil
  • 0

Como Validar Campo E Gravar Em Bd


bylas

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...