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

Ayuda a descifrar código

Estas en el tema de Ayuda a descifrar código en el foro de ASP Clásico en Foros del Web. Necesito ayuda porque tengo que hacer una web en asp parecida al código que ahora les pongo y no lo entiendo muy bien, a ver ...
  #1 (permalink)  
Antiguo 27/04/2010, 10:03
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Ayuda a descifrar código

Necesito ayuda porque tengo que hacer una web en asp parecida al código que ahora les pongo y no lo entiendo muy bien, a ver si me ayudais con las dudas que tengo:

*Es una página que te logueas y si eres un usuario normal te sale una cosa y si eres administrador otra cosa.



Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "aa"
set RS = Conn.Execute("select * from victor.dbo.admins where nombreadmin='" & request.form("usuario") & "' and password='" & request.form("contraseña") & "'")


--esto de arriba es para enlazar la base de datos no? coje la base de datos llamada victor y de la tabla nombreadmin coje usuario (que es una caja de texto creada en otra página de logueo no?) y luego lo mismo con contraseña



if (not RS.eof) then
Session("aqui nose que va*")="1"

--> esto creo que busca en la base de datos no? pero dentro del session nose que hay que poner, que pongo lo que yo quiera?



else
set RS = Conn.Execute("select * from victor.dbo.notas where nombreusuario='" & request.form("usuario") & "' and password='" & request.form("contraseña") & "'")

if (not RS.eof) then
Session("nose ")="2"

--> esto es lo mismo no? porque se pone 2 veces? que es porque si es 1 es administrador y si es 2 es usuario normal?



else

Session("nose")="0"
end if
end if

--> porque 0?

'cerramos conexion bbdd
Conn.Close



session("login")=request.form("usuario")
%>
Hola <% response.write(session("login"))%>
<br>

<%if SEssion("nose")="1" then%>
Hola Administrador, que tenga un buen día.



--> esto es porque si eres 1 eres admin no?

*Ahora aqui pondria las opciones que quiero que tenga el admin



<%else%>
<%if SEssion("daniel")="2" then%>
Eres un usuario normal:
<br>
<br>

--> si es 2 es usuario



<form action=bien.asp method="post">
<center> dni: <input name="dni" maxlength=9></center> <h1 align="center">
<input type=submit value="Mostrar tu nota -->"></h1>
</form>

<center><a href=adios.asp"><br> Desconectar </a></center>
<%end if%>
<%end if%>
<%if SEssion("nose")="0" then%>
El usuario introducido no corresponde.
<a href="valido.asp">
<br>login </a>
<%end if%>
<br>


--> esto de arriba son las opciones del usuario normal
.




A ver si me podeis ayudar un poco ya que acabo de empezar con asp y no me entero mucho.

Gracias por adelantado.
  #2 (permalink)  
Antiguo 27/04/2010, 10:10
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda a descifrar código

Si creeis que hay otra forma más fácil de hacerlo a ver si me lo podeis decir :P
  #3 (permalink)  
Antiguo 27/04/2010, 15:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: Ayuda a descifrar código

Le hice unos cambios al vuelo, vi que tenias unos pequeños errores con los nombres de las variables de sesión:

Código ASP:
Ver original
  1. <%
  2. Set Conn = Server.CreateObject("ADODB.Connection")
  3. Conn.Open "aa"
  4. set RS = Conn.Execute("select * from victor.dbo.admins where nombreadmin='" & request.form("usuario") & "' and password='" & request.form("contraseña") & "'")
  5. if (not RS.eof) then
  6.    Session("nose")="1"
  7. else
  8.    set RS = Conn.Execute("select * from victor.dbo.notas where nombreusuario='" & request.form("usuario") & "' and password='" & request.form("contraseña") & "'")
  9.    if (not RS.eof) then
  10.       Session("nose ")="2"
  11.    else
  12.       Session("nose")="0"
  13.    end if
  14. end if
  15.  
  16. Conn.Close
  17.  
  18. session("login")=request.form("usuario")
  19.  
  20. Select Case Session("nose")
  21. Case "1"
  22.      response.write "Hola administrador " & session("login") & " que tenga un buen día"
  23. Case "2"
  24.      response.write "Hola " & session("login") & " que tenga un buen día"
  25. Case Else %>
  26.    El usuario introducido no corresponde.<br>
  27.     <a href="valido.asp"> login </a>
  28. <%
  29.    Sesion.abandon
  30.    response.end
  31. End Select
  32. %>
  33. <br>
  34.      <br>
  35.      <br>
  36.       <form action=bien.asp method="post">
  37.           <center> dni: <input name="dni" maxlength=9></center> <h1 align="center">
  38.           <input type=submit value="Mostrar tu nota -->"></h1>
  39.       </form>
  40.       <center><a href="adios.asp"><br> Desconectar </a></center>
  41. <br>

Básicamente tu código se resume en esto, tienes dos tablas admins y notas primero buscas en una y si esta, es administrador, sino esta ves si es usuario, si no esta pones una sesión en "0" y mandas el mensaje de error (este paso se puede evitar pero si te es más claro así pues déjalo)

Por lo demás, lo que asumiste es correcto, así funciona.
  #4 (permalink)  
Antiguo 28/04/2010, 07:38
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda a descifrar código

Muchas gracias myakire, me has ayudado bastante sobretodo con los cases lo veo más claro.
La última parte es la que no veo muy claro:


"#
<form action=bien.asp method="post">
#
<center> dni: <input name="dni" maxlength=9></center> <h1 align="center">
#
<input type=submit value="Mostrar tu nota -->"></h1>
#
</form>
#
<center><a href="adios.asp"><br> Desconectar </a></center>
#
<br>"




Si quiero poner más opciones que haga un administrador por ejemplo lo pongo debajo del case 1 no? por ejemplo:

<a href="alta.asp"><br> Alta de un alumno </a>




Se agradece mucho que os molesteis en contestar, poco a poco se va a aprendiendo :P
  #5 (permalink)  
Antiguo 28/04/2010, 10:43
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: Ayuda a descifrar código

En teoría si, pero el Case esta fuera del formulario, si se va a ocupar de este para dar de alta al alumno, necesitas colocar un condicional dentro del FORM

Cosa de ir picándole y probando
  #6 (permalink)  
Antiguo 29/04/2010, 08:25
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda a descifrar código

Holaa, poco a poco ya me va saliendo ya tengo el alta y el baja de alumnos. Pero me sigue fallando lo que te dije, xk en la primera pagina del logueo quiero que si eres admin te de opciones de alta, baja,modificar y tal:

*Elige una opción a realizar:
<a href="alta.asp"><br> Alta de un alumno </a>
<a href="borrar.asp"><br> Eliminar alumno por su dni </a>
<a href="visualizar.asp"><br> Mostrar datos personales y notas de alumnos </a>
<a href="modificar.asp"><br> Modificar los datos de los alumnos </a>
<br>
<a href="desconectar.asp"><br> Desconectar </a>


y si eres usuario te salga una opcion para ver tu nota insertando tu dni (aunque esta parte del código irá en otra página supongo


es un poco complejo y dificultoso creo

a ver si me exais una manilla porfavor :P
  #7 (permalink)  
Antiguo 29/04/2010, 09:13
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: Ayuda a descifrar código

La idea básica es usar un condicional, como te comenté:

Código ASP:
Ver original
  1. <form action=bien.asp method="post">
  2. <%if session("nose") = "1" Then%>
  3. <a href="alta.asp"><br> Alta de un alumno </a>
  4. <a href="borrar.asp"><br> Eliminar alumno por su dni </a>
  5. <a href="visualizar.asp"><br> Mostrar datos personales y notas de alumnos </a>
  6. <a href="modificar.asp"><br> Modificar los datos de los alumnos </a>
  7. <%else%>
  8.           <center> dni: <input name="dni" maxlength=9></center> <h1 align="center">
  9.           <input type=submit value="Mostrar tu nota -->"></h1>
  10. <%End If%>
  11. </form>

No se si ese sería el código definitivo, no le encuentro motivo de existir al formulario, por ejemplo, pero la idea es esa.

Saludos
  #8 (permalink)  
Antiguo 29/04/2010, 13:54
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda a descifrar código

Muchas gracias, ya lo he solucionadoo! Me ha costado un poquillo pero al final funciona.

Eres un crack :)
  #9 (permalink)  
Antiguo 29/04/2010, 14:01
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: Ayuda a descifrar código

Eso es bueno, pero aquí lo importante es que hayas entendido lo que cada linea del código hace, con ello tendrás más probabilidades de hacer modificaciones más complejas en el futuro, cuando te topes con un código que te sirva, independientemente de si funciona bien a la primera, analízalo y compréndelo.

Bien por solucionar el problema
  #10 (permalink)  
Antiguo 30/04/2010, 16:27
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda a descifrar código

tienes razón, pero si no sabes asp y tienes que hacer algo cuesta un poquito. Ahora me estoy rompiendo la cabeza para que los alumnos introduciendo su DNI vean su nota. Tengo este código:


<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "aa2"
set RS = Conn.Execute("select * from basededatos.dbo.notas where dni='" & request.form("dni") & "' and nombreusuario='" &session("login") & "'")
if (not RS.eof) then
response.write("tu nota es:" + rs.fields.value(5))
else
response.write("DNI no válido")
end if

Conn.Close
%>

No veo ningun error, lo que no entiendo es lo del rs.fields(5) nose que hace. Ponga lo que ponga, aunque el DNI esté bien siempre me sale el mensaje de DNI no válido. Nose si es porque ai algun pequeño error que paso por alto o porque quizás no se me guarda la sesión con el nombre del usuario que estoy y no cuadra el logueado anteriormente con su DNI.
He estado buscando como se hace eso y he encontrado una forma por cookies pero nose si funcionará porque con sesiones así ya tendría que ir creo.
  #11 (permalink)  
Antiguo 30/04/2010, 16:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 9 meses
Puntos: 146
Respuesta: Ayuda a descifrar código

rs(5) no se que pueda valer, ya que se refiere al sexto campo que regresa el select, pero como tienes un * no hoy forma de saber qué campo sería.

Si se va siempre por el ELSE es por que ese query no regresa registros, no sabría decirte si sí debería hacerlo, pero comparando lo que pones con el código anterior, veo que haces referencia a otra base de datos ¿esto es correcto?

Antes

set RS = Conn.Execute("select * from victor.dbo.notas where nombreusuario='" & request.form("usuario") & "' and password='" & request.form("contraseña") & "'")

Ahora
set RS = Conn.Execute("select * from basededatos.dbo.notas where dni='" & request.form("dni") & "' and nombreusuario='" &session("login") & "'")
  #12 (permalink)  
Antiguo 01/05/2010, 03:59
 
Fecha de Ingreso: abril-2010
Mensajes: 55
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Ayuda a descifrar código

mm nono está bien, es que en verdad de nombre de base de datos tengo mi nombre y apellidos solo que al copiar el codigo aqui lo cambio pero luego lo pongo bien.

Pues poniendo el codigo que he pegado antes me sale siempre DNI incorrecto, he probado de cambiar los response.write de lugar entre ellos, primero DNI incorrecto y después del else el response.write del rs.fields y probandolo así me da error en esa linia.

El objeto no acepta esta propiedad o método: 'rs.fields.value'
vernota.asp, línea 16


si quito el .value y dejo rs.fields me sale:
Tipo de error:
(0x80020009)
Ocurrió una excepción.
vernota.asp, línea 16




no tengo ni idea de como arreglarlo!!!!

Etiquetas: Ninguno
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 14:24.