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

Problemas con checkbox

Estas en el tema de Problemas con checkbox en el foro de ASP Clásico en Foros del Web. Saludos: Verán con el código abajo indicado hago que un formulario chequee el estado de un campo en una DB hecha en ACCESS y me ...
  #1 (permalink)  
Antiguo 03/12/2004, 04:12
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Problemas con checkbox

Saludos:
Verán con el código abajo indicado hago que un formulario chequee el estado de un campo en una DB hecha en ACCESS y me muestre si el checkbox está activado o desactivado. Pero una vez que cambio el estado del checkbox, es decir, si estaba activado lo desactivo o viceversa y lo envio, la variable me llega vacia. Sin embargo si no cambio el estado del checkbox y envio el formulario la variable me llega con los valores que tiene ese checkbox. ¿Podría alguien explicarme el por qué de este comportamiento?
Gracias
Código:
<%if rs("verenabierto")= "1" then%> 
	Ver oferta en abierto 
	<input  name="verenabierto" type="checkbox" id="verenabierto" value= "1" checked>
   <%else%>
	Ver oferta en abierto
	<input  name="verenabierto" type="checkbox" id="verenabierto" value="0">
   <%end if%>
  #2 (permalink)  
Antiguo 03/12/2004, 05:35
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
esta es una pregunta de HTML

lo que pasa es que estas confundiendo los conceptos del checkbox y del radio button.

veras
lo que estas haciendo es lo siguiente

supongamos rs("verenabierto") = "1"

<input name="verenabierto" type="checkbox" id="verenabierto" value= "1" checked>

te mostrara un checkbox que si es chequeado pasara el valor 1 si no es chequeado no lo pasara.

en otro caso

<input name="verenabierto" type="checkbox" id="verenabierto" value="0">

te mostrara un checkbox sin chequear que si es chequeado pasara el valor 0
y si no es chequeado la variable no pasara.


entonces.... lo que debes hacer es leerte un manualcito de formularios html como este que te pongo aqui, y cambiar el checkbox a radio button

http://www.echoecho.com/htmlforms10.htm


a menos que te haya entendido mal =p

Última edición por Muzztein; 03/12/2004 a las 05:58
  #3 (permalink)  
Antiguo 03/12/2004, 09:58
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Primero, al checkbox dale siempre el mismo valor (esté chequeado o no). Entonces, todo ese IF que tenés lo cambiás por ésta línea:

Código:
Ver oferta en abierto
<input  name="verenabierto" type="checkbox" id="verenabierto" value= "1"<%if rs("verenabierto")= "1" then Response.Write " checked"%>>

Luego, en la página que recibís la información, preguntás por el valor de "verenabierto", si es 1, vale 1 y si no lo és o si es nulo, vale 0:

Código:
<%
var_verenabierto = Request.Form("verenabierto")
If var_verenabierto <> "1" Then var_verenabierto = "0"
%>
__________________
...___...
  #4 (permalink)  
Antiguo 04/12/2004, 07:03
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Hola Al Zuwaga:

El código que me has mandado funciona bien pero cuando desactivo el checkbox y por tanto el valor cambia a 0 no me cambia el valor en el campo verenabierto.
He revisado el código y el nombre del campo se corresponde con el de la base de datos, etc.... No veo el error. Podría echarme una mano a ver si ve el error.
He puesto una linea (en rojo) donde se ven los campos modificados y cuando el valor es 0 nunca aparece el campo modificado, en cambio cuando es 1 si aparece.
Gracias

Código:
 
<!--Incluimos el fichero de constantes-->
<!--#INCLUDE file="../../../ADOVBS.asp"-->
<%
nombreusuario=request.QueryString("nombreusuario")
ruta=request.QueryString("empresanombrefiscal")
'Aquí se usa la coleccion upload.form debido a que el componente AspUplad no
'se lleva bien con el request.form del ASP
Set Upload = Server.CreateObject("Persits.Upload.1")
'Carpeta donde se subirán los ficheros
Upload.Save("C:\Inetpub\vhosts\turofertas.com\httpdocs\images\ofertas\" & ruta & "\")
'Upload.Save("c:\obradoiroweb\obradoiroweb\turofertas\images\ofertas\" & ruta)
'Recogemos el valor de los campos fecha y denominación del formulario
fechapublicacionoferta=upload.form("fechapublicacionoferta")
fechavalidezoferta=upload.form("fechavalidezoferta")
denominacionoferta=upload.form("denominacionoferta")
destinooferta=upload.form("destinooferta")
verenabierto=upload.form("verenabierto")
If verenabierto <> "1" Then 
 verenabierto = "0"
 insertar=true
end if
response.write "El valor de verenabierto es=" & verenabierto
'Recogemos el valor de la variable identificadoroferta. Se usa para determinar la oferta
' que vamos a modificar/ver
identificadoroferta=request.querystring("identificadoroferta")
'Esta función vuelve al formulario anterior para que el usuario pueda completar los datos erroneos
Function pulsarcompletardatos
 response.write("<div align=""center""><br><strong><font face= ""Arial, Helvetica, sans-serif"" size=""3"" color=""#FB4C50"">" & "El/los campo/s arriba indicados no contienen datos o no son correctos. <p> <a href=""javascript:history.back()"">Pulse aquí para poder completar los datos correctamente</strong></font></a></div>")
end function
'Conectamos a la base de datos
set Conn= Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "DSN=clubviajesoferta.com.turofertas"
Conn.open
Set RS=Server.CreateObject("ADODB.Recordset")
RS.activeconnection=Conn 
RS.source="ofertasmayoristas"
RS.Locktype = adLockOptimistic
RS.CursorType = adOpenDinamic
RS.open

'Localizamos el registro a modificar. Hay que convertir a número "identificadoroferta" porque identificarproducto es 
'un campo autonumerico e identificadoroferta es una variable que contiene texto puesto que viene de un formulario
do while rs("identificadoroferta") <> cint(identificadoroferta)
 rs.movenext
loop

'Con el registro a modificar localizado. Sacamos cual es la imagen que habia en la tabla antes de hacer cualquier modificacion
imagenantigua=rs("imagenoferta")
imagenantiguaturofertas=rs("imagenofertaexteriorturofertas")
response.write "<br>imagenantigua= " & imagenantigua
response.write "<br>imagenantiguaturofertas= " & imagenantiguaturofertas

'Variable de control para actualizar el registro
insertar=True
'Validamos los campos tipo fecha, denominación, verenabiero e imagen
IF NOT IsDate(fechapublicacionoferta) then
 response.write("<br><br><br><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "El campo <em>""Fecha Publicación""</em> contiene una fecha incorrecta </font></div>")
 insertar=False
else 
 if year(cdate(fechapublicacionoferta)) < 1900 then
  response.write("<br><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "No se aceptan fechas inferiores al año 1900</font></div>")
  insertar=false
 end if
end if
if NOT IsDate(fechavalidezoferta) then
 response.write("<br><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "El campo <em>""Fecha Validación""</em> contiene una fecha incorrecta </font></div>")
 insertar=False
else 
 if year(cdate(fechavalidezoferta)) < 1900  or cdate(fechavalidezoferta) < date then
  response.write("<br><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "No se aceptan fechas inferiores al año 1900 o el valor del campo ""Fecha Validez"" es menor que el campo ""Fecha Publicación"" </font></div>")
  insertar=false
 end if
end if
if denominacionoferta = "" then 
 response.write("<div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""2"" color=""#FB4C50"">" & "El campo <em>""Denominación""</em> está vacio </font></div>")
 insertar=false
end if 
if insertar=false then
 pulsarcompletardatos
end if
For each Parametro in upload.Form
 response.write("<br><br>Campo: " & (parametro.name) & ", Contenido: " & parametro.value) & "<br>"
 rs(parametro.name)=Ucase(parametro.value)
Next
'Este For-Next hace que el fichero se suba al servidor
ruta="../../images/ofertas/" & ruta & "/"
set FSO=CreateObject("Scripting.FileSystemObject")
For Each File in Upload.Files
 'Este IF comprueba que el tipo de imagen sea conocido
 If File.ImageType = "UNKNOWN" Then
  response.write("<div align=""center""><br><strong><font face= ""Arial, Helvetica, sans-serif"" size=""3"" color=""#FB4C50"">" & "La oferta no se ha añadido a la base de datos. <br>No es un tipo de imagen correcto. <br> Debe seleccionar una imagen mediante el boton ""Examinar"". <p> <a href=""javascript:history.back()"">Pulse aquí para poder completar los datos correctamente</strong></font></a></div>")
  insertar=False
  Response.End
   End If
 'Como el tipo de archivo es conocido añadimos el registro con la ruta de la imagen
 rs(File.name)=ruta & (File.filename)
 'Ya que hemos añadido la ruta, también añadimos el ancho y el alto de la imagen
 
 
  
 select case (file.name)
  case "imagenoferta"
  imagennueva=ruta & (File.filename)
  rs("imagenofertaancho")=file.imagewidth
  rs("imagenofertaalto")=file.imageheight  
  
  'Este IF comprueba si las imagenes del registro que se esta modificando son diferentes.
  'Si es así, añadimos el nuevo registro, despues construimos la ruta del fichero que 
  'vamos a borrar, luego añadimos el alto y ancho de la nueva imagen y luego borramos el fichero antiguo
 
  if imagenantigua <> imagennueva then
   response.write "<br>imagennueva= " & imagennueva
   response.write "<br>las imagenes comparadas: imagenantigua e imagennueva son diferentes"
   rs(File.name)=ruta & (File.filename)
  
   cadenaorigen=imagenantigua
   cadenabuscar="../../"
   'cadenacambiar="c:/obradoiroweb/obradoiroweb/Turofertas/"
   cadenacambiar="C:\Inetpub\vhosts\turofertas.com\httpdocs\"
   rutaimagenaborrar=replace(cadenaorigen,cadenabuscar,cadenacambiar,1,1,1)
   response.write "<br> esta es la imagen que tiene que borrar: " & imagenantigua
	if (file.name)="imagenoferta" then
	 rs("imagenofertaancho")=file.imagewidth
	 rs("imagenofertaalto")=file.imageheight
	end if
   set file=fso.GetFile(rutaimagenaborrar)
   file.delete
  end if 
 
  case "imagenofertaexteriorturofertas"
   imagennuevaturofertas=ruta & (File.filename)
   rs("imagenofertaexteriorturofertasancho")=file.imagewidth
   rs("imagenofertaexteriorturofertasalto")=file.imageheight  
  
   'Este IF comprueba si las imagenes del registro que se esta modificando son diferentes.
   'Si es así, añadimos el nuevo registro, despues construimos la ruta del fichero que 
   'vamos a borrar, luego añadimos el alto y ancho de la nueva imagen y luego borramos el fichero antiguo
 
  if imagenantiguaturofertas <> imagennuevaturofertas then
   response.write "<br><br><br><br>imagennuevaturofertas= " & imagennuevaturofertas
   response.write "<br>las imagenes comparadas: imagenantiguaturofertas e imagennuevaturofertas son diferentes"
   rs(File.name)=ruta & (File.filename)
  
   cadenaorigen1=imagenantiguaturofertas
   cadenabuscar1="../../"
   'cadenacambiar="c:/obradoiroweb/obradoiroweb/Turofertas/"
   cadenacambiar1="C:\Inetpub\vhosts\turofertas.com\httpdocs\"
   rutaimagenaborrar1=replace(cadenaorigen1,cadenabuscar1,cadenacambiar1,1,1,1)
   response.write "<br> esta es la imagen que tiene que borrar: " & imagenantiguaturofertas
	if (file.name)="imagenofertaexteriorturofertas" then
	 rs("imagenofertaexteriorturofertasancho")=file.imagewidth
	 rs("imagenofertaexteriorturofertasalto")=file.imageheight
	end if
   response.write "<br>rutaimagenaborrar1= " & rutaimagenaborrar1
   set file=fso.GetFile(rutaimagenaborrar1)
   file.delete
  end if 
 end select
Next

rs.update 
'Con este IF se muestra el mensaje de que la oferta ha sido actualizada correctamente
if insertar=true then
 response.write("<div align=""center""><br><strong><font face= ""Arial, Helvetica, sans-serif"" size=""3"" color=""#FB4C50"">" & "<br><br><br><br>La oferta ha sido modificada en nuestra base de datos.</strong></font></a></div>")%>
 <br>
 <br>
 <A HREF="../../../modulo_gestion.asp?nombreusuario=<%=nombreusuario%>" target="_parent">Menu principal </A> ** <A HREF="modificar_ver_ofertas.asp?nombreusuario=<%=nombreusuario%>" target="_parent">Modificar/Ver</A> 
<%end if
rs.close
conn.close
%>
<body leftmargin="5" topmargin="5" marginwidth="5" marginheight="5">
</body>
  #5 (permalink)  
Antiguo 07/12/2004, 11:52
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Ayuda, please....
Gracias
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 22:14.