Ir para conteúdo

POWERED BY:

Arquivado

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

Gustavo Melo

Script tenta cadastrar duas vezes

Recommended Posts

Estou com a seguinte dúvida e não consegui resolver ainda.

Cadasto de usuário:

Ao cadastrar um usuário desejo verificar se o login já existe primeiro.

Com o código abaixo ele cadastra e em seguida informa que o usuário já existe, mesmo não existindo anteriormente. Ou seja, verifica que não tem nenhum login, faz o cadastro e depois informa que já existe.

 

<%
login = Lcase(SemAcento(request("login")))


Set rs2 = Server.CreateObject("ADODB.Recordset")

	strChecaLogin = "SELECT SCUSU_login FROM SC_usuario WHERE SCUSU_login = '" & login & "';"
	rs2.Open strChecaLogin, adoCon

if rs2.EOF then

	Adiciona = "INSERT INTO SC_usuario(SCUSU_nome,SCUSU_email,SCUSU_login,SCUSU_senha,SCUSU_data,SCUSU_hora,SCUSU_nivel,SCUSU_ativo,SCUSU_descricao,SCUSU_foto,SCUSU_autor) VALUES('"&usuario&"','"&email&"','"&login&"','"&senha&"','"&data_agora&"','"&hora_agora&"','"&nivel&"','"&ativo&"','"&descricao&"','"&foto&"','"&autor&"')"
	AdoCon.Execute(Adiciona)
	Response.write "Cadastro ok."


else

	Response.write "Login já existe! Escolha outro."


end if

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo, antes de inserir, fazemos um SQL SELECT, para ver se os dados ja existem.

 

    <% ‘incluir_action.asp => fazer a inclusao no BD, antes fazendo uma verificaçao

   ‘no BD através de SQL Select if not rs.eof then

   ‘redireciono para incluir_form.asp?msgeof=1 else

   ‘incluo no bd atraves da SQL Insert e redireciono para adiministraçao.asp?msg=1

   ‘e lá receberá um mensagem de sucesso

   Option explicit

   ‘declaro as var

   dim varlogin, varemail, varsenha, conexao, conDBQ, constring, rsselect, SQLselect, rsinsert, SQLinsert

   ‘recupero todos os dados

   varlogin=trim(request.form(“login”))

   varsenha=trim(request.form(“senha”))

   varemail=trim(request.form(“email”))

   ‘crio a conexao

   %>

   <!–#include file=”conn/conexao1.asp”–>

   <% ‘abrir a conexao

   call abreconexao

   ‘crio o rsselect para verificar se os dados jah estaun cadastrados

   set rsselect=server.createobject(“ADODB.Recordset”)

   ‘crio o SQLselect

   SQLselect=”SELECT login FROM login WHERE login=’”&varlogin&”‘”

   rsselect.open SQLselect,conexao,1,3

   if not rsselect.eof then

   response.redirect(“incluir_form_treina.asp?msgeof=1″)

   set rsselect=nothing

   else

   ‘crio o rsinsert para inseiri os dados no bd

   set rsinsert=server.createobject(“ADODB.Recordset”)

   ‘crio o SQLinsert pra incluir no bd

   SQLinsert=”INSERT INTO login(login,senha,email) values(‘”&varlogin&”‘,’”&varsenha&”‘,’”&varemail&”‘)”

   rsinsert.open SQLinsert,conexao,1,3

   response.redirect(“administracao_treina.asp?msg=1″)

   set rsinsert=nothing

   end if

   call fechaconexao %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xanburzum,

 

Refiz o código utilizando o exemplo que você enviou e mesmo assim não funcionou.

Obrigado por sua ajuda.

 

Segue o código atualizado:


login = Lcase(SemAcento(request("login")))

Set rs2 = Server.CreateObject("ADODB.Recordset")
 	strChecaLogin = "SELECT SCUSU_login FROM SC_usuario WHERE SCUSU_login = '"&login&"'"
	rs2.Open strChecaLogin, adoCon, 1, 3

if NOT rs2.EOF then

	Response.write "Login já existe! Escolha outro."
	set rs2=nothing

else

	set rsInsert=server.createobject("ADODB.Recordset") 
	strAdiciona = "INSERT INTO SC_usuario(SCUSU_nome,SCUSU_email,SCUSU_login,SCUSU_senha,SCUSU_data,SCUSU_hora,SCUSU_nivel,SCUSU_ativo,SCUSU_descricao,SCUSU_foto,SCUSU_autor) VALUES('"&usuario&"','"&email&"','"&login&"','"&senha&"','"&data_agora&"','"&hora_agora&"','"&nivel&"','"&ativo&"','"&descricao&"','"&foto&"','"&autor&"')"
	rsInsert.open strAdiciona, adoCon, 1, 3 
	Response.write "Cadastro ok."
	set rsInsert=nothing 

end if

 

Onde pode estar errado?

 

Realizei alguns testes e percebi que tudo funciona corretamente SE eu comentar o código para inserir, conforme abaixo:

 

if NOT rsConsulta.EOF then
	response.Write("<br><br>Ocorreu o seguinte erro:<p>")
	response.write ("<li>O login <font color='red'><b>"&login&"</b></font> já está cadastrado.</li><br>")
	set rsConsulta = Nothing

else

	'set rsAdiciona = Server.CreateObject("ADODB.Recordset") 
	'sql2 = "INSERT INTO SC_usuario(SCUSU_nome,SCUSU_email,SCUSU_login,SCUSU_senha,SCUSU_data,SCUSU_hora,SCUSU_nivel,SCUSU_ativo,SCUSU_descricao,SCUSU_foto,SCUSU_autor) VALUES('"&usuario&"','"&email&"','"&login&"','"&senha&"','"&data_agora&"','"&hora_agora&"','"&nivel&"','"&ativo&"','"&descricao&"','"&foto&"','"&autor&"')"
	'rsAdiciona.open sql2, adoCon, 1, 3 
	response.write ("<li>O login <font color='blue'><b>"&login&"</b></font> foi cadastrado com sucesso.</li><br>")
	response.write "<meta http-equiv='refresh' content='3;URL=usuarios.asp'>"
	'set rsAdiciona = Nothing  

end if

Deixando somente o RESPONSE.WRITE tudo funciona corretamente, ou seja, faz a verificação e cadastra somente quando não existir o mesmo LOGIN.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça um teste pondo em vez de uma variável um valor exactamente igual como tem na base de dados, só para teste,

 

 


strChecaLogin = "SELECT SCUSU_login FROM SC_usuario WHERE SCUSU_login like 'umregistoseudabasededados'"


Compartilhar este post


Link para o post
Compartilhar em outros sites

São duas situações distintas:

 

1 - Já possui um login no banco de dados:

O script verifica, identifica e mostra que já existe. Não faz novo cadastro. [Ok]

 

2 - Não possui um login no baco de dados:

O script verifica, cadastra e mostra que a mensagem que já existe um login no banco de dados.

É como se tentasse fazer o cadastro duas vezes, aí na primeira realiza o cadastro e na segunda vez mostra a mensagem que já existe. [Este é o problema.]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria mais ou menos isto :

 

stql = "Select * from tabela where nome='" & nome & "'and senha= '" & senha &"'"
Set rs = conn.Execute(stql)
if rs.eof or rs.bof then 
set rsl=server.createobject("adodb.recordset")
sqlo = "insert into tabela (nome,senha) Values('"&nome&"','"&senha&"')"
Set rsl = conn.Execute(sqlo)
else
response.redirect "outrapagina.asp"

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.