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

Dramas al insertar con Checkbox

Estas en el tema de Dramas al insertar con Checkbox en el foro de ASP Clásico en Foros del Web. Amigos...he intentado cambiar el código, la base de datos etc...pasa lo siguiente..me está insertando de esta forma... El formulario consta de los campos dia, mes, ...
  #1 (permalink)  
Antiguo 04/09/2003, 08:02
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 22 años, 2 meses
Puntos: 9
Dramas al insertar con Checkbox

Amigos...he intentado cambiar el código, la base de datos etc...pasa lo siguiente..me está insertando de esta forma...

El formulario consta de los campos dia, mes, anno y hora.pero luego tengo que incorporarle otros elementos más... La base de datos tiene los siguientes campos

dia, mes, año, id*, actividad, estado, usuario, solicita, glosa, hora.... el campo Id es primary key con autoincremento Actividad, glosa y solicita son campos que pueden aceptar registros nulos...el proble es el siguiente:

Supongamos que escojo dos Horas las 8:30 y las 9:00 .Me inserta de la siguiente forma.

dia ! mes ! año ! usuario ! estado ! hora
4 ! 9 ! 2003 ! mguzman ! disponible ! 4
4 ! 9 ! 2003 ! mguzman ! disponible ! 9
4 ! 9 ! 2003 ! mguzman ! disponible ! 2003
4 ! 9 ! 2003 ! mguzman ! disponible ! 8:30
4 ! 9 ! 2003 ! mguzman ! disponible ! 9:00
4 ! 9 ! 2003 ! mguzman ! disponible ! Enviar

En el campo hora los tres primeros registros no deben estar ahi y menos en ultimo...

El formulario, que está en la página planificación.asp, es el siguiente..

<form name="form2" method="post" action="inserta.asp">
<table width="268">
<tr>
<td width="76" height="24"><font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif">Fecha</font></td>
<td width="180"><input name="dia" type="text" id="dia" value=<%=dia%> size="1" maxlength="0">
<font color="#FFFFFF" size="2" face="Arial, Helvetica, sans-serif"><strong>/
<input name="mes" type="text" id="mes" size="2" maxlength="0" value=<%=mes%>>
/
<input name="anio" type="text" id="anio" size="3" maxlength="0" value=<%=anno%>>
</strong></font></td>
</tr>
<%
i=1
While NOT Res.EOF

hora=Res("Hora")%>
<tr>
<td> <div align="right"><font color="#FFFFFF" size="1">
<input type="checkbox" name="<%=i%>" value="<%=hora%>">
</font></div></td>
<td><div align="left"><font color="#FFFFFF" size="1"><%=hora%></font></div></td>
</tr>
<%i=i+1
Res.movenext
wend
Res.Close
Mi_Conexion.Close
set Res=nothing
set Mi_Conexion=nothing
%>
<tr>
<td><input name="enviar" type="submit" id="enviar" value="Enviar"></td>
<td>&nbsp;</td>
</tr>
</table>
</form>



y luego rescato de la siguiente forma, en la página inserta.asp


<%
dim hora
dim i
dim codusuario
dim dia
dim anno
dim mes
dim estado
dim conexion
dim res
dim sql
estado = "disponible"
dia = request.form("dia")
anno = request.form("anio")
mes = request.form("mes")
codusuario = session("usuario")
Set conexion = Server.CreateObject("ADODB.Connection")
Set res = Server.CreateObject("ADODB.Recordset")
res.CursorType=adOpenDynamic

conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\horas\horas.mdb;"

for i = 1 to request.Form.count()

sql="Insert into Actividades (dia, mes, año, hora, usuario, estado) values ( '"& dia &"', '"& mes &"', '"& anno &"', '"& request.Form(i) &"', '"& codusuario &"', '"& estado &"' )"
conexion.Execute(sql)

Next
%>


<body>
<form name="form1" method="post" action="planificacion.asp">
<p align="center">La disponibilidad ha sido ingresada</p>
<p align="center">
<input name="enviar" type="submit" id="enviar" value="Enviar">
</p>
</form>
</body>
<%res.Close
conexion.Close
set res=nothing
set conexion=nothing%>



Ayudenme a encontrar el error ..como les dije he intentando varias modificaciones y hasta ahora nada..grax
__________________
Buena Vida...
Francisco
  #2 (permalink)  
Antiguo 04/09/2003, 08:30
Avatar de nazkatuta  
Fecha de Ingreso: julio-2002
Ubicación: EH - BCN
Mensajes: 222
Antigüedad: 22 años, 9 meses
Puntos: 0
El problema es que es´tas haciendo un insert por cada elemento del formulario.

supongo que lo que necesitas en realidad serían estas dos inserciones

4 ! 9 ! 2003 ! mguzman ! disponible ! 8:30
4 ! 9 ! 2003 ! mguzman ! disponible ! 9:00

lo que te recomiendo es que llames a los checkbox igual ("hora", por ejemplo). A la hora de recoger los datos en la otra pagina haz un request.form("hora"). Lo que obtienes con esto es una lista de las horas marcadas separadas por comas.

si haces un split con esa cadena obtienes un array con tantos elemenos como horas marcadas...

kedaría asi

Código:
horas = request.form("hora")
arrHoras = split(horas,",")
for i = 0 to Ubound(arrHoras) -1
sql="Insert into Actividades (dia, mes, año, hora, usuario, estado) values ( '"& dia &"', '"& mes &"', '"& anno &"', '"& arrHoras(i)&"', '"& codusuario &"', '"& estado &"' )"
conexion.Execute(sql)

Next
espero que te sirva.
__________________
Cita:
Gaur ere nahi nuke...
zure ondoan esnatu
  #3 (permalink)  
Antiguo 04/09/2003, 09:44
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 22 años, 2 meses
Puntos: 9
Cita:
Mensaje Original por nazkatuta
El problema es que es´tas haciendo un insert por cada elemento del formulario.

supongo que lo que necesitas en realidad serían estas dos inserciones

4 ! 9 ! 2003 ! mguzman ! disponible ! 8:30
4 ! 9 ! 2003 ! mguzman ! disponible ! 9:00

lo que te recomiendo es que llames a los checkbox igual ("hora", por ejemplo). A la hora de recoger los datos en la otra pagina haz un request.form("hora"). Lo que obtienes con esto es una lista de las horas marcadas separadas por comas.

si haces un split con esa cadena obtienes un array con tantos elemenos como horas marcadas...

kedaría asi

Código:
horas = request.form("hora")
arrHoras = split(horas,",")
for i = 0 to Ubound(arrHoras) -1
sql="Insert into Actividades (dia, mes, año, hora, usuario, estado) values ( '"& dia &"', '"& mes &"', '"& anno &"', '"& arrHoras(i)&"', '"& codusuario &"', '"& estado &"' )"
conexion.Execute(sql)

Next
espero que te sirva.

Perfecto gracias..... solo tuve que modificarle algo el -1 porque no ingresaba el último check seleccionado.....gracias estimado....
__________________
Buena Vida...
Francisco
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:39.