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

¿Como validar campos según selección de valores de un formulario?

Estas en el tema de ¿Como validar campos según selección de valores de un formulario? en el foro de ASP Clásico en Foros del Web. Ahora tengo una base de datos que recoge los datos de un formulario. Dni, nombre, usuario, clave, email, etc. Bueno pues resulta que hasta ahora ...
  #1 (permalink)  
Antiguo 06/01/2005, 23:08
 
Fecha de Ingreso: enero-2005
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
Desacuerdo ¿Como validar campos según selección de valores de un formulario?

Ahora tengo una base de datos que recoge los datos de un formulario.
Dni, nombre, usuario, clave, email, etc.
Bueno pues resulta que hasta ahora pues me validaba si el dni, nombre, usuario, email, etc, y respondía un error.
Bueno pues ahora pongo un ejemplo.
Dentro del formulario hay un campo en el cual hay que escoger varias opciones:Policía Autonómica,Policia Nacional,Policia local,Otros
Pues bien hasta ahora no había problema cual fuera la opción que cogiera, ya que era independiente en la base de datos una entrada u otra, pero ahora resulta que tengo en la misma base de datos todos los dni de la policia local y quiero que cuando alguien policia local (haya seleccionado este cuerpo) y rellenado su dni, compruebe primero si es o no policia local y le conteste que no lo es, o bien le deje registrarse tras comprobación correcta.
En la base de datos esta tabla la he llamado escalafon y la que hasta ahora utilizaba para validar la bd se llama registro.
Todo ello aparte de las funciones que ya se hacían antes de comprobación, tales como no repetir usuarios, claves, email, etc. etc.
Bueno espero haberme explicado.
Os paso el código asp que recoge el formulario, a ver si me podéis ayudar. Si os hace falta os puedo pasar también el formulario pero para las opciones lo tengo así:

<TR>
<TD width="73" height="23">
<p align="justify"><font size="2" face="Arial" color="#000080">Cuerpo:</p>
</font></TD>
<TD width="335" height="23">
<p align="left">
<SELECT NAME="cuerpo" style="border-style: inset; border-width: 2; background-color: white">
<OPTION VALUE="Guardia Civil">Guardia Civil
<OPTION VALUE="Policía Nacional">Policía Nacional
<OPTION VALUE="Policía Autonómica">Policía Autonómica
<OPTION VALUE="Policía Local">Policía Local
<OPTION VALUE="Otros Cuerpos">Otros Cuerpos
</SELECT><font color="#0000A0" size="3" face="Serifa BT"><sup>* </sup></font><font color="#0000A0" size="3"><sup>Seleccione una
opción.</sup></font></p>
</TD>
</TR>



Gracias.

RECOGE-FORMULARIO.ASP

<%
nombre = Request.Form("nombre")
apellido1 = Request.Form("apellido1")
apellido2 = Request.Form("apellido2")
dni = Request.Form("dni")
cuerpo = Request.Form("cuerpo")
destino = Request.Form("destino")
provincia = Request.Form("provincia")
email = Request.Form("email")
usuario = Request.Form("usuario")
clave = Request.Form("clave")

'Abre la conexion con la base de datos a traves de una conexion ODBC
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/.../register.mdb")
Set RS = Server.CreateObject ("ADODB.RecordSet")
sql="Select dni from registro Where dni="& dni &" and cuerpo='" & cuerpo & "'"
RS.Open sql, Conn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el dni.
If (RS.EOF = true) then
set RS=nothing
Set RS = Server.CreateObject ("ADODB.RecordSet")
sql="Select email from registro Where email='" & email & "'"
RS.Open sql, Conn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el dni.
If (RS.EOF = true) then
set RS=nothing
Set RS = Server.CreateObject ("ADODB.RecordSet")
sql="Select Usuario from registro Where Usuario='" & usuario & "'"
RS.Open sql, Conn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el usuario.
If (RS.EOF = true) then
'Ejecuta un sentencia SQL de consulta
sql = "INSERT INTO registro ("
sql=sql & "Nombre,"
sql=sql & "Apellido1,"
sql=sql & "Apellido2,"
sql=sql & "dni,"
sql=sql & "cuerpo,"
sql=sql & "destino,"
sql=sql & "provincia,"
sql=sql & "email,"
sql=sql & "usuario,"
sql=sql & "clave)"
sql=sql & " VALUES ("
sql=sql & "'" & nombre & "',"
sql=sql & "'" & apellido1 & "', "
sql=sql & "'" & apellido2 & "', "
sql=sql & dni & ","
sql=sql & "'" & cuerpo & "',"
sql=sql & "'" & destino & "',"
sql=sql & "'" & provincia & "', "
sql=sql & "'" & email & "', "
sql=sql & "'" & usuario & "', "
sql=sql & "'" & clave & "')"

Conn.Execute(sql)
If Err = 0 Then
Set oMail = CreateObject("CDO.Message")
oMail.From = "[email protected]"
oMail.To = Request.Form("email")
oMail.Bcc = "[email protected]"
oMail.Subject = "Registro en la WPP"
oMail.TextBody = "Bienvenido - 2.000/2.005 | 5º Aniversario. Se ha producido peticion de registro al enviar mail de registro a " & apellido1 & " " & apellido2 & "," & nombre & " / dni= " & dni & " / cuerpo= " & cuerpo & " / localidad= " & destino & " / provincia= " & provincia & " / email= " & email & " / usuario= " & usuario & " / clave= " & clave & ". Su peticion de registro esta siendo tramitada. Recuerde que en los proximos dias le comunicaremos por email la activacion del registro para el acceso a las zonas restringidas. Recuerde que ahora puede colaborar gratuitamente con la WPP, visitando nuestros patrocinadores haciendo click en los logos de publicidad. El Area GC es exclusiva para el personal en activo de la Guardia Civil. Una vez activada su cuenta no olvide registrarse en la Lista de Correo WPP, con ello estará totalmente informado de las novedades de interés, en la sección :::Profesionales::: o pinche aquí; http://www.....cial.n...t/lis....asp"
oMail.Send

Set oMail = Nothing
Response.Write "2.000/2.005 | 5º Aniversario WPP. En unos minutos recibira un e-mail de confirmacion de esta solicitud. Si no lo recibe es porque ha insertado un email no valido, entonces envie un email a registro@....., exponiendo que no ha recibido la confirmacion. La tramitacion del registro tardara unos dias, recibiendo un email cuando este correctamente activada. Recuerde que ahora puede colaborar gratuitamente con la WPP, visitando nuestros patrocinadores haciendo click en los logos de publicidad. Una vez activada su cuenta no olvide registrarse en la Lista de Correo WPP, con ello estara totalmente informado de las novedades de interes, en la seccion :::Profesionales:::"
End If

Else
Response.Redirect "logoff.html"
End If

Else
Response.Redirect "logoffmail.html"
End If

Else
Response.Write "2.000/2.005 | 5º Aniversario WPP. No se puede registrar de nuevo, ya es un usuario registrado. Si desea alguna cosa o tiene alguna duda envíe un e-mail a registro@..........."
End If

'Libera memoria
Conn.Close
Set Conn= Nothing
%>


Gracias espero vuestra ayuda, o aclaración si no me he explicado bien.

Última edición por antoli; 06/01/2005 a las 23:18
  #2 (permalink)  
Antiguo 07/01/2005, 02:48
 
Fecha de Ingreso: abril-2004
Mensajes: 25
Antigüedad: 21 años
Puntos: 0
Validar campos según selección

Buenas,

Yo tengo algo parecido y en mi modesta opinión, el primer campo a rellenar sería el DNI y luego el Cuerpo a seleccionar. De esta manera controlarías ambos campos mediante un solo Evento de Control, ya que es más dificil añadir un Evento de Control en un campo "text".

Dentro del formulario que contendrá un campo text para añadir el DNI, y un campo SELECT, le añado un control
Código HTML:
select name="informediario"  onChange="location.href(MISMA_PAGINA.asp?VARIABLE_DE_CONTROL=' + NOMBRE_DEL_FORMULARIO.NOMBRE_DEL_SELECT.options[NOMBRE_DEL_FORMULARIO.NOMBRE_DEL_SELECT.selectedIndex].value)"
De esta manera controlaría el campo texto y el de Selección, luego dependiendo de la opción seleccionada, y en función del valor que contenga la variable "informediario" realazaría la búsqueda en la BBDD con el DNI y el Cuerpo.

Espero que te pueda ayudar.

Un saludo
__________________
El saber no es lo importante, lo verdaderamente importante, es conocer al que sabe.
  #3 (permalink)  
Antiguo 07/01/2005, 04:50
 
Fecha de Ingreso: enero-2005
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
Bien entonces si no te importa como sería en mi formulario, una cosa así.

<TR>
<TD width="73" height="23">
<p align="justify"><font size="2" face="Arial" color="#000080">Cuerpo:</p>
</font></TD>
<TD width="335" height="23">
<p align="left">
<SELECT NAME="cuerpo" style="border-style: inset; border-width: 2; background-color: white" onChange="location.href(solcontra.html?cuerpo=' + frm_alta.cuerpo.options[frm_alta.guardia civil.selectedIndex].value)"
<OPTION VALUE="Guardia Civil">Guardia Civil
<OPTION VALUE="Policía Nacional">Policía Nacional
<OPTION VALUE="Policía Autonómica">Policía Autonómica
<OPTION VALUE="Policía Local">Policía Local
<OPTION VALUE="Otros Cuerpos">Otros Cuerpos
</SELECT><font color="#0000A0" size="3" face="Serifa BT"><sup>* </sup></font><font color="#0000A0" size="3"><sup>Seleccione una
opción.</sup></font></p>
</TD>
</TR>

Gracias, pero lo que no me queda muy claro es que tendría que cambiar en el que coge el formulario.asp para que no busque el dni, si selecciona guardia civil.

Última edición por antoli; 07/01/2005 a las 04:52
  #4 (permalink)  
Antiguo 07/01/2005, 07:40
 
Fecha de Ingreso: abril-2004
Mensajes: 25
Antigüedad: 21 años
Puntos: 0
Varias cosas con respecto al código,

La primera de todas, es que la página debería ser un ASP y no HTML, ya que tal y como está no podríamos realizar la búsqueda del DNI mediante el cuerpo seleccionado.

La segunda, es que en el OnChange tienes que terminar el tag con > además, no puedes poner:
cuerpo=' + frm_alta.cuerpo.options[frm_alta.guardia civil.selectedIndex].value

debería ser:
cuerpo=' + frm_alta.cuerpo.options[frm_alta.cuerpo.selectedIndex].value

Una vez que has introducido el DNI y seleccionado el cuerpo, deberías controlar, como te he dicho antes, la variable "cuerpo", algo parecido a esto:
If response.querystring("cuerpo") <> "" Then

Dentro del IF abres la conexión a la BBDD mediante el criterio de búsqueda del DNI y del cuerpo seleccionado.

En caso de que no lo encuentre, le muestras un mensaje de error, si lo encuentra pues a continuar.
__________________
El saber no es lo importante, lo verdaderamente importante, es conocer al que sabe.
  #5 (permalink)  
Antiguo 07/01/2005, 08:13
 
Fecha de Ingreso: enero-2005
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
Venga estoy en ello, lo que pasa es que me da error el javascript en secuencia de comandos LÍNEA 126, que es exactamente debajo de donde esta el onchange, te paso lo que tengo hecho hasta ahora a ver si voy bien encaminado.
Gracias.

SOLCONTRA.ASP

Código:
<HTML>
<HEAD>
<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">
<TITLE>Solicitud de Registro WPP.</TITLE>
<script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//  End -->
</script>
</HEAD>
<BODY TEXT="#ffffff" LINK="#008080" VLINK="#008080" ALINK="#008080" BGCOLOR="#000000">
<form name="frm_alta" method="post" action="http://www.webp***l.net/**/register.asp" OnSubmit="return check();">
<CENTER>
<TABLE WIDTH="355" BORDER="1" CELLSPACING="0" CELLPADDING=0" bgcolor="#C0C0C0" height="200">
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">Nombre:</font><TD width="335" height="23"><font size="2">
  <!--webbot bot="Validation" s-display-name="Nombre" s-data-type="String" b-allow-letters="TRUE" b-allow-whitespace="TRUE" b-value-required="TRUE" i-minimum-length="1" i-maximum-length="20" --><INPUT TYPE="text" SIZE="17" NAME="nombre" BORDER="1" maxlength="20" style="border-style: inset; border-width: 2; background-color: white">
    </font>
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">Apellido1:</font></center><TD width="335" height="23">
  <p align="left"><font size="2">
  <!--webbot bot="Validation" s-display-name="Apellido 1º" s-data-type="String" b-allow-letters="TRUE" b-allow-whitespace="TRUE" b-value-required="TRUE" i-minimum-length="1" i-maximum-length="50" --><INPUT TYPE="text" SIZE="25" NAME="apellido1" BORDER="1" maxlength="50" style="border-style: inset; border-width: 2; background-color: white"></font><TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">Apellido2:</font><TD width="335" height="23"><font size="2">
  <!--webbot bot="Validation" s-display-name="Apellido 2º" s-data-type="String" b-allow-letters="TRUE" b-allow-whitespace="TRUE" b-value-required="TRUE" i-minimum-length="1" i-maximum-length="50" --><INPUT TYPE="text" SIZE="25" NAME="apellido2" BORDER="1" maxlength="50" style="border-style: inset; border-width: 2; background-color: white">
    </font>
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">DNI:</font><TD width="335" height="23">
    <p align="left"><font size="2">
    <!--webbot bot="Validation" s-display-name="DNI" s-data-type="Integer" s-number-separators="x" b-value-required="TRUE" i-minimum-length="6" i-maximum-length="8" --><INPUT SIZE="7" NAME="dni" BORDER="1" maxlength="8" style="border-style: inset; border-width: 2; background-color: white">&nbsp;</font><font size="3" color="#0000A0"><sup>
    </sup></font><font face="Serifa BT" size="3"><sup><font color="#0000A0">*</font> 
    </sup></font><font color="#0000A0" size="3"><sup>
    Ocho dígitos sin puntos y
    sin letra.</sup></font>
<TR> 
<TD width="73" height="23">
<p align="justify"><font size="2" face="Arial" color="#000080">Cuerpo:</p>
</font></TD> 
<TD width="335" height="23">
<p align="left">
<SELECT NAME="cuerpo" style="border-style: inset; border-width: 2; background-color: white" onChange="location.href(solcontra.asp?cuerpo=' + frm_alta.cuerpo.options[frm_alta.cuerpo.selectedIndex].value">
<OPTION VALUE="Guardia Civil">Guardia Civil 
<OPTION VALUE="Policía Nacional">Policía Nacional
<OPTION VALUE="Policía Autonómica">Policía Autonómica 
<OPTION VALUE="Policía Local">Policía Local
<OPTION VALUE="Otros Cuerpos">Otros Cuerpos
</SELECT><font color="#0000A0" size="3" face="Serifa BT"><sup>* </sup></font><font color="#0000A0" size="3"><sup>Seleccione una
opción.</sup></font></p>
</TD> 
<% 
 
   dni = Request.Form("dni") 
   cuerpo = Request.Form("cuerpo")
    
   'Abre la conexion con la base de datos a traves de una conexion ODBC 
   Set Conn = Server.CreateObject("ADODB.Connection")
   Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("/*****/register.mdb")
   Set RS = Server.CreateObject ("ADODB.RecordSet")   
sql = "SELECT * FROM escalafon WHERE dni="& dni  &" and cuerpo='" &  cuerpo & "'"
   RS.Open sql, Conn
   'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el dni.
   If (RS.EOF = false) then
   set RS=nothing
   
   Else
      Response.Write "<br><br><div align=center><u>2.000/2.005 | 5º Aniversario WPP.</div><br><br>"
      Response.Write "<div align=justify>No es guardia civil en activo. Lea estas circustancias para solucionar su problema.</div><br><br></u>"
      Response.Write "<div align=justify><font color=#DADADA>1.-</font>Si introdujo su dni <u><font color=red>" & Request.Form("dni") & "</u></font> incorrectamente, vuelva atras, e intentelo de nuevo.</div>"
      Response.Write "<div align=justify><font color=#DADADA>2.-</font>Si es Guardia Civil en Reserva y/o Retirado o pertenece a cualquier otro cuerpo policial, haga click en el boton inferior -No Guardia Civil Activo-.<form name='tuformulario' FORM ACTION='https://www.secureheaven.com/ssl/ssl-wpp.com.ar/solcontra_nogc.html' target=_self METHOD=GET><p style='margin-top: 1'><b><input type='submit'  value='No Guardia Civil Activo' style='border:1px solid #FFFFFF; font-size: 10px; background-color: #408080; color: #FFFFFF; font-family: Verdana; '></font></b></form><br><br>"
  	  Response.Write "<div align=center><a href=javascript:window.close(); title='CERRAR VENTANA'><b><font face='Flat Brush' color=#008080 style=font-size:10pt><u>CERRAR VENTANA</u></font></b></em></a></span>"
   End If

   'Libera memoria 
   Conn.Close 
   Set Conn= Nothing 
%> 

</TR><TR><TD width="73" height="23">
    <p align="justify"><font size="2" face="Arial" color="#000080">Localidad:</font><TD width="335" height="23"><font size="2">
  <!--webbot bot="Validation" s-display-name="Destino" s-data-type="String" b-allow-letters="TRUE" b-allow-whitespace="TRUE" b-value-required="TRUE" i-minimum-length="1" i-maximum-length="50" --><INPUT TYPE="texT" SIZE=39 NAME="destino" BORDER="1" maxlength="50" style="border-style: inset; border-width: 2; background-color: #white">
    </font>
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">Provincia:</font><TD width="335" height="23"><font size="2">
  <!--webbot bot="Validation" s-display-name="Provincia" s-data-type="String" b-allow-letters="TRUE" b-allow-whitespace="TRUE" b-value-required="TRUE" i-minimum-length="1" i-maximum-length="30" --><INPUT SIZE=17 NAME="provincia" BORDER="1" maxlength="30" style="border-style: inset; border-width: 2; background-color: white">
    </font>
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">E-mail:</font><TD width="335" height="23">
    <p align="left"><font size="2">
    <!--webbot bot="Validation" s-display-name="Email" s-data-type="String" b-allow-letters="TRUE" b-allow-digits="TRUE" b-value-required="TRUE" i-minimum-length="5" i-maximum-length="50" --><INPUT SIZE="25" NAME="email" BORDER="1" maxlength="50" style="border-style: inset; border-width: 2; background-color: white">
    </font>
    <font color="#0000A0" size="3" face="Serifa BT"><sup>* </sup></font><font color="#0000A0" size="3"><sup>E-mail
    válido.</sup></font>
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">Usuario:</font><TD width="335" height="23">
    <p align="left"><font size="2">
    <!--webbot bot="Validation" s-display-name="usuario" b-value-required="TRUE" i-minimum-length="4" i-maximum-length="12" --><INPUT SIZE="15" NAME="usuario" BORDER="1" maxlength="12" style="border-style: inset; border-width: 2; background-color: white">
    </font><font color="#0000A0" size="3" face="Serifa BT"><sup>* </sup></font><font color="#0000A0" size="3"><sup>Entre 4 y 12 dígitos.</sup></font>
<TR><TD width="73" height="23"><font size="2" face="Arial" color="#000080">Clave:</font><TD width="335" height="23">
    <p align="left"><font size="2">
    <!--webbot bot="Validation" s-display-name="clave" b-value-required="TRUE" i-minimum-length="4" i-maximum-length="12" --><INPUT SIZE="15" NAME="clave" BORDER="1" maxlength="12" style="border-style: inset; border-width: 2; background-color: white">
    </font><font color="#0000A0" size="3" face="Serifa BT"><sup>* </sup></font><font color="#0000A0" size="3"><sup>Entre 4 y 12 dígitos.</sup></font>
<TR><TD width="462" colspan="2">
    <p align="left" style="line-height: 100%; margin-top: 3">&nbsp;&nbsp; 
    <input type="checkbox" name="acceptconds" value="ON">&nbsp;
    <font color="#0000A0" size="3"><sup>* Acepto las condiciones legales.&nbsp; <a href="javascript:;" onClick="MM_openBrWindow('../condicioneswpp.html','','scrollbars=yes,toolbar=no,resizable=no,width=400,height=400,left=220,top=100')" title="Ver condiciones">Ver condiciones.</a></sup></font>
</TABLE>
<p style="margin-top: 3">
<INPUT TYPE="submit" VALUE="Enviar" style="background-color: #008080; color: #FFFFFF; font-family: Verdana; font-size: 8 pt; border-style: outset">
<INPUT TYPE="reset" VALUE="Borrar" style="background-color: #008080; color: #FFFFFF; font-family: Verdana; font-size: 8 pt; border-style: outset">
</form>
</form>
<div ALIGN="CENTER"><strong><a href="javascript:window.history.back()"><img src="izda.gif" border="0" alt="VOLVER ATRÁS"></A></div>
<div ALIGN="CENTER"><FONT SIZE="-1" COLOR="white"><EM>©&nbsp; Web
  Policial Profesional WPP&nbsp; 2.003</EM></FONT></div>
</BODY>

Última edición por antoli; 07/01/2005 a las 08:21
  #6 (permalink)  
Antiguo 07/01/2005, 08:24
 
Fecha de Ingreso: enero-2005
Mensajes: 50
Antigüedad: 20 años, 4 meses
Puntos: 0
Lo acabo de probar y no me rula ni a tiros.
De entrada me carga el asp dentro de html, estoy perdido.
Venga a ver si coloreas mi verdor.
Gracias por el tiempo que pierdes.
  #7 (permalink)  
Antiguo 10/01/2005, 00:38
 
Fecha de Ingreso: abril-2004
Mensajes: 25
Antigüedad: 21 años
Puntos: 0
Una pequeña Modificación

Buenas,

Tienes que realizar un par de modificaciones en la línea del Select.

La primera, tienes que añadir el simbolo ' en -- location.href('solcontra.asp?cuerpo=' -- y posteriormente, añadir un ) detrás del .value de la misma línea, antes de las "

Con eso debería tirar.
__________________
El saber no es lo importante, lo verdaderamente importante, es conocer al que sabe.
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 11:11.