Foros del Web » Programando para Internet » ASP Clásico »

comprobar dos strings(2)

Estas en el tema de comprobar dos strings(2) en el foro de ASP Clásico en Foros del Web. Haber si alguien me puede ayudar, ya no se ni lo que hacer, el siguiente codigo lo que hace es conectarse a la base de ...
  #1 (permalink)  
Antiguo 11/05/2005, 14:45
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
comprobar dos strings(2)

Haber si alguien me puede ayudar, ya no se ni lo que hacer, el siguiente codigo lo que hace es conectarse a la base de datos y obtener unos datos de una tabla (lo hace de manera correcta), obtiene los datos del formulario (tambien los obtiene) y luego quiero comprobar que los datos obtenidos de la base de datos y los obtenidos del formulario son los mismos (cosa que no ocurre), siempre se me va por el ultimo else y la verdad no entiendo el motivo.
Podria ayudarme alguien?
<%
Dim Nom_adm, Cla_adm
Set Conn= Server.CreateObject("ADODB.Connection")
Conn.Open "colegio"
Set RS=Server.CreateObject("ADODB.Recordset")
Set RS=Conn.Execute("SELECT nombre, clave FROM accesoadm")

Nom_adm= Cstr(Request.Form("Nom_adm"))
Cla_adm=Cstr(Request.Form("Cla_adm"))
if RS.EOF then%>
<script language="VBscript">
alert("No hay datos de administrador.");
</script>
<%End if

if Nom_adm=RS("nombre") then
if Cla_adm=RS("clave") then%>
<script language="JavaScript">
alert("Todo correcto");
location.replace("http://localhost/Colegio/EsAdmin.asp");
</script>
<%
else %>
<script language="JavaScript">
alert("Rellene los campos con los datos correctos.");
location.replace("http://localhost/Colegio/PrubAdm.asp");
</script>
<%End if
else %>
<script language="JavaScript">
alert("No existe un administrador con ese nombre de usuario.Vuelva a rellenar los campos con los datos correctos.");
location.replace("http://localhost/Colegio/PrubAdm.asp");
</script>
<%End if

RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
%>
  #2 (permalink)  
Antiguo 11/05/2005, 14:56
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Me pareceq eu se en donde esta el error, no lo lei muy detenidamente, pero creo que esta en la sentencia SQL. Al poner "SELECT Nombre, Clave FROM accesoadm", te esta trayendo todos los registros de tu tabla, por lo tanto, al no recorrer con un bucle todos esos registros, no tienes un valor con que comparar el nombre y clave ingresado en tu formulario. Y no estoy seguro, pero me parece que con un bucle tampoco podrías hacer un log in. Por que mejor no lo haces de la forma tradicional, prueba con este codigo.

set RS = Server.CreateObject("ADODB.RecordSet")
set RS = conn.Execute("SELECT Nombre, Clave FROM accesoadm WHERE Nombre = '"&Request.Form("nombre")&"'")

if RS.EOF then
--- SCRIPT para el aviso que el nombre de usuario no existe ----
else
if RS("Clave") = Request.Form("clave") then
--- SCRIPT de aviso que se ha logueado con éxito el usuario ----
else
--- SCRIPT de aviso que la contraseña es incorrecta ----
end if
end if

RS.Close
set RS = nothing

Espero que te sirva y despues me cuentas si te funciono. Saludos.

Última edición por mariano_donati; 11/05/2005 a las 14:57 Razón: Para agregar unas palabras
  #3 (permalink)  
Antiguo 11/05/2005, 14:57
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Independientemente de que siempre comparas el valor del formulario con el valor del primer registro de accesoadm, supongo que te refieres a que este IF nunca se cumple: if Nom_adm=RS("nombre") then, ¿es cierto?

Bueno, antes que nada debes de imprimir el contenido tanto de Nom_adm como de RS("nombre") y verificar visualmente que sean iguales, si sí lo son, pues solo te queda aplicarles un TRIM para eliminar los espacios. Aunque creo que el problema se solucionaría usando un Where en la consulta.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:26.