Ir para conteúdo

POWERED BY:

Arquivado

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

rcdesign

ASP x Banco de Dados

Recommended Posts

Estou fazendo um formulário de cadastro incluindo as informações no access.Preciso fazer duas checagens antes da inclusão no BD:1. Verificar se a pessoa já possui cadastro;2. Verificar se o e-mail é válido;Retornando estas informações para o internauta. Como posso fazer isso?O formulário chama o arquivo de conexão (adiciona.asp) que é o seguinte:<%Dim nome, sexo, dtnasc, email, ddd, telefone, endereco, cidade, estado, cep, instrumento1, instrumento2, instrumento3, outrosinstr, estilo1, estilo2, estilo3, outrosestilos, formacao, experiencia, influencias, banda, senha, lembretenome = replace(request.form("nome"), "'", "''")sexo = replace(request.form("sexo"), "'", "''")dtnasc = replace(request.form("dtnasc"), "'", "''")email = replace(request.form("email"), "'", "''")ddd = replace(request.form("ddd"), "'", "''")telefone = replace(request.form("telefone"), "'", "''")endereco = replace(request.form("endereco"), "'", "''")cidade = replace(request.form("cidade"),"'","''")estado = replace(request.form("estado"),"'","''")cep = replace(request.form("cep"),"'","''")instrumento1 = replace(request.form("instrumento1"),"'","''")instrumento2 = replace(request.form("instrumento2"),"'","''")instrumento3 = replace(request.form("instrumento3"),"'","''")outrosinstr = replace(request.form("outrosinstr"),"'","''")estilo1 = replace(request.form("estilo1"),"'","''")estilo2 = replace(request.form("estilo2"),"'","''")estilo3 = replace(request.form("estilo3"),"'","''")outrosestilos = replace(request.form("outrosestilos"),"'","''")formacao = replace(request.form("formacao"),"'","''")experiencia = replace(request.form("experiencia"),"'","''")influencias = replace(request.form("influencias"),"'","''")banda = replace(request.form("banda"),"'","''")senha = replace(request.form("senha"),"'","''")lembrete = replace(request.form("lembrete"),"'","''")Set DB = Server.CreateObject("ADODB.Connection")cnpath="DBQ=" & server.mappath("cadastro.mdb")DB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpathinserir = "INSERT INTO tbcadastromusicos (nome, sexo, dtnasc, email, ddd, telefone, endereco, cidade, estado, cep, instrumento1, instrumento2, instrumento3, outrosinstr, estilo1, estilo2, estilo3, outrosestilos, formacao, experiencia, influencias, banda, senha, lembrete) " & _"VALUES ('" & nome & "','" & sexo & "','" & dtnasc & "','" & email & "','" & ddd & "','" & telefone & "','" & endereco & "','" & cidade & "','" & estado & "','" & cep & "','" & instrumento1 & "','" & instrumento2 & "','" & instrumento3 & "','" & outrosinstr& "','" & estilo1 & "','" & estilo2 & "','" & estilo3 & "','" & outrosestilos & "','" & formacao & "','" & experiencia & "','" & influencias & "','" & banda & "','" & senha & "','" & lembrete & "')"DB.Execute(inserir)response.redirect"confirma.asp"%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem,depois de declarar as milhões de variáveis que você tem, faça o seguinte:nome = req......email = req...."select nome,email from tabela where nome = '"&nome&"' or mail = '"&email&"'set verif = server.create....if not verif.eof then response.redirect "cadastra.asp?erro=1"else 'aqui você continua a fazer seus request e o insert na tabela.end ifok?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara a chave primaria vai ser o nome ou o email??dependendo de qual for você usará a string sql adequada para verificar se o usuario ja é cadastrado,por exemplo se for o nome ela será assimsql="SELECT * FROM nome_tabela WHERE nome=' "&request("nome")&" ' "ai você abre o recordeset com essa string e ...if recordeset.eof thenresponse.write ("já cadastrado")else' insere dadosend ifjá quanto ao codigo pra ver se o email é valido, use um simples javascript na pagina do formulario mesmocoloque a declaração do filtro no topo da paginavar filtro=/^.+@.+\..{2,3}$/e depois no onsubmit chane a seguinte função que tambem deverá ser colocada no topo da paginafunction checaemail(nome_formulario) { if (filtro.test(form.email.value) == false) alert("O email informado não é válido");}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marioufpa,Como sou 'chucro' em programação fiz o que você orientou, já que me parecia mais simples do que o J.Filho postou. Mas está mostrando o seguinte erro:Erro de tempo de execução do Microsoft VBScript error '800a01a8' Objeto necessário: '' /galeria/adiciona.asp, line 37 A linha 37 é: if recordset.eof thenVou passar de novo todo o código do adiciona.asp:<%Dim nome, sexo, dtnasc, email, ddd, telefone, endereco, cidade, estado, cep, instrumento1, instrumento2, instrumento3, outrosinstr, estilo1, estilo2, estilo3, outrosestilos, formacao, experiencia, influencias, banda, senha, lembretenome = replace(request.form("nome"), "'", "''")sexo = replace(request.form("sexo"), "'", "''")dtnasc = replace(request.form("dtnasc"), "'", "''")email = replace(request.form("email"), "'", "''")ddd = replace(request.form("ddd"), "'", "''")telefone = replace(request.form("telefone"), "'", "''")endereco = replace(request.form("endereco"), "'", "''")cidade = replace(request.form("cidade"),"'","''")estado = replace(request.form("estado"),"'","''")cep = replace(request.form("cep"),"'","''")instrumento1 = replace(request.form("instrumento1"),"'","''")instrumento2 = replace(request.form("instrumento2"),"'","''")instrumento3 = replace(request.form("instrumento3"),"'","''")outrosinstr = replace(request.form("outrosinstr"),"'","''")estilo1 = replace(request.form("estilo1"),"'","''")estilo2 = replace(request.form("estilo2"),"'","''")estilo3 = replace(request.form("estilo3"),"'","''")outrosestilos = replace(request.form("outrosestilos"),"'","''")formacao = replace(request.form("formacao"),"'","''")experiencia = replace(request.form("experiencia"),"'","''")influencias = replace(request.form("influencias"),"'","''")banda = replace(request.form("banda"),"'","''")senha = replace(request.form("senha"),"'","''")lembrete = replace(request.form("lembrete"),"'","''")Set DB = Server.CreateObject("ADODB.Connection")cnpath="DBQ=" & server.mappath("cadastro.mdb")DB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpathDim sqlDim recordsetsql="SELECT * FROM nome_tabela WHERE nome=' "&request("nome")&" ' "if recordset.eof thenresponse.write ("Você já está cadastrado em nosso Banco de Dados. Se quiser atualizar suas informações entre em contato com cadastro@galeriadomusico.net")elseinserir = "INSERT INTO tbcadastromusicos (nome, sexo, dtnasc, email, ddd, telefone, endereco, cidade, estado, cep, instrumento1, instrumento2, instrumento3, outrosinstr, estilo1, estilo2, estilo3, outrosestilos, formacao, experiencia, influencias, banda, senha, lembrete) " & _"VALUES ('" & nome & "','" & sexo & "','" & dtnasc & "','" & email & "','" & ddd & "','" & telefone & "','" & endereco & "','" & cidade & "','" & estado & "','" & cep & "','" & instrumento1 & "','" & instrumento2 & "','" & instrumento3 & "','" & outrosinstr& "','" & estilo1 & "','" & estilo2 & "','" & estilo3 & "','" & outrosestilos & "','" & formacao & "','" & experiencia & "','" & influencias & "','" & banda & "','" & senha & "','" & lembrete & "')"DB.Execute(inserir)response.redirect"confirma.asp"end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara no lugar da linha abaixo

 

sql="SELECT * FROM nome_tabela WHERE nome=' "&request("nome")&" ' "

 

coloca

 

sql="SELECT * FROM nome_tabela WHERE nome=' "&request("nome")&" ' "

 

' Cria a conexão com o banco de dados.

set recordeset = Server.CreateObject("ADODB.Recordset")

recordeset .ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("cadastro.mdb")

 

' Cria a string SQL responsável por inserir os dados no banco de dados.

recordeset .Source = sql

recordeset .CursorType = adOpenForwardOnly

' CursorLocation informa o local onde será armazenado

recordeset .CursorLocation = adUseServer

' Tipo de bloqueio ( somente leitura, escrita ...) no modo abaixo, pode-se inserir no bd.

recordeset .LockType = adLockPessimistic

' Abre a conexão com o banco de dados.

recordeset .Open()

 

e não esquece de mudar nome_tabela da sql pelo nome da tabela que você quer consultar, nem nome pelo nome do campo chave primaria nessa tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda. Fiz o que você postou, com estas alterações:- nome da tabela (que eu esqueci de alterar na anterior)- recordeset para recordsetA chave primária é nome que é o mesmo nome do campo.Agora está dando assim:ADODB.Recordset error '800a0bb9' Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito. /galeria/adiciona.asp, line 41 Linha 41: recordset.CursorLocation = adUseServercomo teste exclui esta linha... mas sempre dá esta mesma mensagemProgramação alterada:<%Dim nome, sexo, dtnasc, email, ddd, telefone, endereco, cidade, estado, cep, instrumento1, instrumento2, instrumento3, outrosinstr, estilo1, estilo2, estilo3, outrosestilos, formacao, experiencia, influencias, banda, senha, lembretenome = replace(request.form("nome"), "'", "''")sexo = replace(request.form("sexo"), "'", "''")dtnasc = replace(request.form("dtnasc"), "'", "''")email = replace(request.form("email"), "'", "''")ddd = replace(request.form("ddd"), "'", "''")telefone = replace(request.form("telefone"), "'", "''")endereco = replace(request.form("endereco"), "'", "''")cidade = replace(request.form("cidade"),"'","''")estado = replace(request.form("estado"),"'","''")cep = replace(request.form("cep"),"'","''")instrumento1 = replace(request.form("instrumento1"),"'","''")instrumento2 = replace(request.form("instrumento2"),"'","''")instrumento3 = replace(request.form("instrumento3"),"'","''")outrosinstr = replace(request.form("outrosinstr"),"'","''")estilo1 = replace(request.form("estilo1"),"'","''")estilo2 = replace(request.form("estilo2"),"'","''")estilo3 = replace(request.form("estilo3"),"'","''")outrosestilos = replace(request.form("outrosestilos"),"'","''")formacao = replace(request.form("formacao"),"'","''")experiencia = replace(request.form("experiencia"),"'","''")influencias = replace(request.form("influencias"),"'","''")banda = replace(request.form("banda"),"'","''")senha = replace(request.form("senha"),"'","''")lembrete = replace(request.form("lembrete"),"'","''")Set DB = Server.CreateObject("ADODB.Connection")cnpath="DBQ=" & server.mappath("cadastro.mdb")DB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpathDim sqlDim recordsetsql="SELECT * FROM tbcadastromusicos WHERE nome='"& request("nome")&"'"set recordset = Server.CreateObject("ADODB.Recordset")recordset.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("cadastro.mdb")recordset.Source = sqlrecordset.CursorType = adOpenForwardOnlyrecordset.CursorLocation = adUseServerrecordset.LockType = adLockPessimisticrecordset.Open()if recordset.eof thenresponse.write ("Você já está cadastrado em nosso Banco de Dados. Se quiser atualizar suas informações entre em contato com cadastro@galeriadomusico.net")elseinserir = "INSERT INTO tbcadastromusicos (nome, sexo, dtnasc, email, ddd, telefone, endereco, cidade, estado, cep, instrumento1, instrumento2, instrumento3, outrosinstr, estilo1, estilo2, estilo3, outrosestilos, formacao, experiencia, influencias, banda, senha, lembrete) " & _"VALUES ('" & nome & "','" & sexo & "','" & dtnasc & "','" & email & "','" & ddd & "','" & telefone & "','" & endereco & "','" & cidade & "','" & estado & "','" & cep & "','" & instrumento1 & "','" & instrumento2 & "','" & instrumento3 & "','" & outrosinstr& "','" & estilo1 & "','" & estilo2 & "','" & estilo3 & "','" & outrosestilos & "','" & formacao & "','" & experiencia & "','" & influencias & "','" & banda & "','" & senha & "','" & lembrete & "')"DB.Execute(inserir)response.redirect"confirma.asp"end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi mal cara, esqueci de mudar as constantes de ADO, é que já estou acostumadovoce pode fazer duas coisas para corrigir isso, conseguir o arquivo adovbs.inc e colocar um include para ele<!--#include file="adovbs.inc" -->ou então substituir as constantes pelo seu valoras que eu usei neste codigo são estasadOpenForwardOnly substitua por 0 (zero)adUseServer substitua por 2adLockPessimistic substitua por 2veja qual o proximo erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

se optar pela primeira opção pode conseguir o arquivo citado no proprio windows, geralmente ele é instaldo na pastac:/Arquivos de programas/Arquivos comuns/System/adopegue-o e coloque no diretorio do seu sitee faça o include com o caminho certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Próximo erro: :D Tentei com as duas opções e deu exatamente a mesma reposta:Ele não cadastra... apenas mostra a resposta do response.write, mesmo que não tenha nenhum cadastro com o mesmo nome...Aproveitando.... como coloco link para o e-mail de contato dentro do response.write?

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce deve colocar o codigo html de um link detro do response .write

 

response.write ("Você já está cadastrado em nosso Banco de Dados. Se quiser atualizar suas informações entre em contato com <a href="mailto:cadastro@galeriadomusico.net">cadastro@galeriadomusico.net</a>")

 

e a proposito de os detalhes do erro que esta dando agora

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi o que eu fiz pra colocar o link mas aí aparece este erro:Erro de compilação do Microsoft VBScript error '800a03ee' ')' esperado /galeria/adiciona.asp, line 48 response.write ("<br><br>Você já está cadastrado em nosso Banco de Dados.<br><br><br>Se quiser atualizar suas informações entre em contato com <a href="mailto:cadastro@galeriadomusico.net">cadastro@galeriadomusico.net.<br><br><br>Voltar ao Galeria do Músico.")Sem o link ele simplesmente retorna o response.write, como se já houvesse alguém cadastrado como aquele nome..

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi mal mais uma vez cara, é que o codigo html que coloquei foi gerado pelo dream, o erro se deve a não troca das aspas duplas internas ao write por aspas simples, basta apenas trocar o codigo por este

 

response.write ("<br><br>Você já está cadastrado em nosso Banco de Dados.<br><br><br>Se quiser atualizar suas informações entre em contato com <a href='mailto:cadastro@galeriadomusico.net'>cadastro@galeriadomusico.net.<br><br><br>Voltar ao Galeria do Músico.")

Compartilhar este post


Link para o post
Compartilhar em outros sites

só para efeito de explicação, este erro deve-se ao fato de ao encontrar a primeira aspa dupla dentro do write ele entende que o write esteja fechando a aspa colocada no inicio e faz com que espera o fechamento do write com um parentese, o que não ocorre ja que o caracter que vem em seguida é m e não o parentese

Compartilhar este post


Link para o post
Compartilhar em outros sites

;) beleza... amigo.... obrigado pela ajuda....... agora está funcionando.....

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.