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

Coger valores al mismo tiempo

Estas en el tema de Coger valores al mismo tiempo en el foro de ASP Clásico en Foros del Web. Hola saludos a todos. Queria saber como podria enviar los valores que coga de todos los select select y que al darle a un unico ...
  #1 (permalink)  
Antiguo 21/09/2010, 03:47
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Coger valores al mismo tiempo

Hola saludos a todos.

Queria saber como podria enviar los valores que coga de todos los select select y que al darle a un unico boton cambie las notas de su correspondiente registro.

Alumno_registrado.asp
Cita:
Código ASP:
Ver original
  1. <&#37;
  2. Dim sql
  3. Dim BD
  4. Dim recordset
  5. Dim ruta_fichero
  6. ruta_fichero=server.mappath("Calificaciones.mdb")
  7. Set BD=Server.createobject("ADODB.connection")
  8. BD.Open"provider=Microsoft.jet.OLEDB.4.0;Data Source="&ruta_fichero
  9. sql="SELECT *from Alumnos"
  10. Set recordset=CreateObject("ADODB.recordset")
  11. recordset.open sql,BD
  12.  
  13. Response.write ("<table border='1' cellpadding='0' cellspacing='0' style='border: 1px solid #aaaaaa;color:#8D0905' width='100%'><tr><td width='33%' align='center'><b>Nombre</b></td><td width='33%' align='center'><b>Nota</b></td><td width='34%' align='center'><b>Aptitud</b></td></tr></table><br>")
  14. response.write ("<table width='100%' border='1' cellpadding='0' cellspacing='0' style='border: 1px solid #aaaaaa;color:#373737;font-family:arial;font-size:12'")
  15. recordset.movefirst
  16.     While Not recordset.eof or recordset.Bof
  17.         if recordset.fields("Nota")>4 then
  18.             response.write ("<tr bgcolor='#D7E4FF'><td width='33%' align='center'>")
  19.             response.write recordset.fields("Nombre")
  20. ' En el action creo la ruta del querystring con el valor del campo Matricula de la base de datos.
  21.             response.write ("</td><td width='33%' align='center' valign='middle'><br><form action='nota_cambio.asp?matri="&recordset.fields("Matricula")&"' method='post'>")
  22.             response.write recordset.fields("Nota")
  23. 'el select envia la nota a la que se va actualizar.
  24.             response.write (" <select name='nota_cambio'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>")
  25.             response.write ("</td><td width='34%' align='center'>")
  26.             response.write ("Apto")
  27.             response.write ("</td></tr>")
  28.         Else
  29.             response.write ("<tr bgcolor='#FFD2D2'><td width='33%' align='center'>")
  30.             response.write recordset.fields("Nombre")
  31. ' En el action creo la ruta del querystring con el valor del campo Matricula de la base de datos.
  32.             response.write ("</td><td width='33%' align='center' valign='middle'><br><form action='nota_cambio.asp?matri="&recordset.fields("Matricula")&"' method='post'>")
  33.             response.write recordset.fields("Nota")
  34. 'el select envia la nota a la que se va actualizar.
  35.             response.write (" <select name='nota_cambio'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option></select>")
  36.             response.write ("</td><td width='34%' align='center'>")
  37.             response.write ("No apto")
  38.             response.write ("</td></tr>")
  39.         end if
  40. recordset.movenext
  41.     Wend
  42. response.write("</table>")
  43. response.write("<br><center><input style='background-color:#5474F1;border-color:#0C3DAF:;width: 150px;height:25px;font-family: verdana;border: 1px solid #103EF5;color: #FFFFFF;font-weight: bold;font-size:10' type='submit' value='CAMBIAR NOTAS'></form></center>")
  44. response.write("<br><br>")
  45. BD.close
  46. Set BD=Nothing
  47. %>
  48.  
  49. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  50. <html xmlns="http://www.w3.org/1999/xhtml">
  51. <head>
  52.  
  53. <style type="text/css">
  54. #nombre {
  55.     font-family:Verdana;
  56.     font-size:15px;
  57.     color:#1F1F1F}
  58.  
  59. #boton {
  60.     background-color:#5474F1;
  61. border-color:#0C3DAF:;
  62.     width: 60px;
  63.     font-family: verdana;
  64.     border: 1px solid #103EF5;
  65.     color: #FFFFFF;
  66.     font-weight: bold;
  67.     font-size: 10px;}
  68.    
  69. #alum {
  70.     font-family:Verdana;
  71.     font-size:12px;
  72.     color:#8D0905;
  73. </style>
  74. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  75. <title>Documento sin t&iacute;tulo</title>
  76. </head>
  77.  
  78. <body>
  79. <form action="nota.asp" method="post">
  80. <div id="alum">
  81.   <div align="center"><strong>Alumno registrado</strong></div>
  82. </div>
  83.     <br />
  84.     <div id="nombre">
  85.       <div align="center">Nombre:
  86.         <input name="nombre">
  87.         Matricula: <input name="matricula">
  88.         <select name="nota">
  89.           <option value="0">0</option>
  90.           <option value="1">1</option>
  91.           <option value="2">2</option>
  92.           <option value="3">3</option>
  93.           <option value="4">4</option>
  94.           <option value="5">5</option>
  95.           <option value="6">6</option>
  96.           <option value="7">7</option>
  97.           <option value="8">8</option>
  98.           <option value="9">9</option>
  99.           <option value="10">10</option>
  100.         </select>
  101.       </div>
  102.     </div>
  103.     <div align="center">
  104.       <input id="boton" type="submit" value="ENVIAR">
  105.      </div> <br/>
  106. </form>        
  107. </body>
  108. </html>
nota_cambio.asp
Cita:
Código ASP:
Ver original
  1. <%option explicit
  2. 'defino las variables
  3. '<---
  4. Dim nota_cambio
  5. Dim nom
  6. Dim sql
  7. Dim BD
  8. Dim ruta_fichero
  9. Dim nombre
  10. '--->
  11.  
  12. nom=request.Querystring("matri")'con el querystring llamo a lo que contenga el parametro matri de alumno_registrado.asp
  13. nota_cambio=request.form("nota_cambio")'contiene el valor del select que envio del boton submit echo en asp
  14. ruta_fichero=server.mappath("Calificaciones.mdb")'Base de datos con 4 campos: Matricula(numerico, clave primaria), Nota(numero), Aptitud(char), Nombre(char) base de datos de accsess
  15. Set BD=Server.createobject("ADODB.connection")
  16. BD.Open"provider=Microsoft.jet.OLEDB.4.0;Data Source="&ruta_fichero
  17.  
  18.     sql="update Alumnos set Nota="&nota_cambio&" where Matricula="&nom&""'este es un update que me actualiza la nota. cuando elijo el valor del select se queda grabado en la variable nota_cambio y  en matricula se queda grabado la matricula de cada alumno
  19.  
  20. BD.execute(sql)'ejecuto la sentencia sql
  21. BD.close'cierro la base de datos
  22. Set BD=Nothing
  23. Response.Redirect("alumno_registrado.asp")'para finalizar redirecciono a alumno_registrado.asp y con los camios ya echos
  24. %>
estan alojados en brinkster.
http://angelgon.brinkster.net/Prueba_/alumno_registrado.asp

No encuentro la forma de guardarlos en variables distintas aunque supongo que ese no seria la forma correcta. Y si la es nose como programarla.

Ya habia echo algo parecido en http://angelgon.brinkster.net/Prueba/alumno_registrado.asp (me ayudasteis en un problema con el querystring) pero en este caso cree un boton para cada registro y lo que quiero es cambiar las notas pero con un unico boton.
Queda mejor supongo.

Saludos y gracias.

Última edición por Batan; 21/09/2010 a las 03:59
  #2 (permalink)  
Antiguo 21/09/2010, 04:26
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Coger valores al mismo tiempo

Hola

No he entendido gran cosa. Intenta replantear la explicación. También sería conveniente que nos mostrases el HTML que se genera al ejecutar Alumno_registrado.asp

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 21/09/2010, 04:36
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Coger valores al mismo tiempo

Me explico.
Quiero cambiar las notas de cada alumno, eligiendo primero los valores para las notas y una vez haya elegido esos valores para cada registro(alumno), darle al boton y se actualicen las notas de todos los alumnos por el valor que se haya asignado a su respectivo select.

Puedes probar el que tengo en
http://angelgon.brinkster.net/Prueba/alumno_registrado.asp
Es igual solo que en este caso eligo primero las notas y al darle al unico boton que hay,se actualicen las notas.

Aqui tengo el HTML del unico boton:
alumno_registrado.asp
  #4 (permalink)  
Antiguo 21/09/2010, 05:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Coger valores al mismo tiempo

Hola

Yo lo dejaría tal y como está, solamente que usaría AJAX para no cargar una y otra vez la página. No sé si esto te convence

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 21/09/2010, 06: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, 3 meses
Puntos: 146
Respuesta: Coger valores al mismo tiempo

En lo personal estoy de acuerdo que haya solo un botón, eso de darle "OK" por cada cambio con Ajax o sin el como que es una lata (y actualizarlo con Ajax por cada change de la lista tampoco por que puede estar solo jugueteando con las calificaciones).

Viendo tu ejemplo creo que esta fácil, tendrías que tener un solo formulario (no uno por cada lista como ahora) y a cada Select ponerle el Id del alumno de nombre, luego en tu página de actualización recorres la colección Request.Form y hacer la actualización por cada item

for each control in request.form
for indice=1 to request.form(control).count
Cmd.Execute ("UPDATE alumnos_cal SET Calificacion = " & request.form(control)(indice) & " WHERE idAlumno = " & control)
next
next

Bueno, esa es la idea que se me ocurre así a lo rápido

Saludos!
  #6 (permalink)  
Antiguo 21/09/2010, 08:08
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Coger valores al mismo tiempo

Hola

Es en la primera opción que pensé, pero luego me dí cuenta que habría que actualizar todos los campos, aunque solamente se hubiese modificado uno. Luego pensé en hacer un filtrado para saber que campos llegaban vacíos, de esta manera queda solventado el problema, pero luego me di cuenta que habría que hacer un filtrado y es lo que no supe como resolver. Llegué al mismo código que expones, en el cual haces el filtrado usando control, que lo único que trae es el nombre del campo.
¿Me equivoco? no lo he probado
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 21/09/2010, 08:36
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Coger valores al mismo tiempo

Yo tampoco lo he provado acabo de ver el mensaje pero aun asi cuando recoges la id y el valor en el select ya se quedan grabados,y solo tienes que llamarlos mediante el request en la pagina del actualizacion.
Pero no se como poner la id en el select para cada registro.
  #8 (permalink)  
Antiguo 21/09/2010, 12:05
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Coger valores al mismo tiempo

Hola

Tendría que ir en el value de cada option y después con la función Split() dividirlo
Cita:
<option value="1-10">1</option>
<option value="2-10">1</option>
.....
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 21/09/2010, 15:09
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Coger valores al mismo tiempo

Gracias. Lo voy a probar
  #10 (permalink)  
Antiguo 22/09/2010, 07:07
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: Coger valores al mismo tiempo

Ya me perdí ....

Pero por si entendí que Adler te esta sugiriendo poner el Id del alumno junto con el valor en cada propiedad value pues como que no comulgo con ello, ¿por qué no poner de NOMBRE el ID y dejas el value con la calificación como asume el código que puse?

Quizá el que ahora no entiende soy yo
  #11 (permalink)  
Antiguo 22/09/2010, 07:39
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Coger valores al mismo tiempo

Segun dijo Adler quedaria algo como esto?

Código ASP:
Ver original
  1. response.write (" <select name='nota_cambio'><option value='"&recordset.fields("Matricula")&"-0'>0</option><option value='"&recordset.fields("Matricula")&"-1'>1</option><option value='"&recordset.fields("Matricula")&"-2'>2</option><option value='"&recordset.fields("Matricula")&"-3'>3</option><option value='"&recordset.fields("Matricula")&"-4'>4</option><option value='"&recordset.fields("Matricula")&"-5'>5</option><option value='"&recordset.fields("Matricula")&"-6'>6</option><option value='"&recordset.fields("Matricula")&"-7'>7</option><option value='"&recordset.fields("Matricula")&"-8'>8</option><option value='"&recordset.fields("Matricula')&"-9">9</option><option value='"&recordset.fields("Matricula")&"-10'>10</option></select> <input style='background-color:#0B5795;border-color:#0C3DAF:;width: 25px;font-family: verdana;border: 1px solid #103EF5;color: #FFFFFF;font-weight: bold;font-size: 10px;' type='submit' value='OK'></form>")

Elde Myakire no entendi a que se refiere. Lo siento.
  #12 (permalink)  
Antiguo 22/09/2010, 07:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Coger valores al mismo tiempo

Hola
Cita:
Iniciado por Myakire Ver Mensaje
Ya me perdí ....

Pero por si entendí que Adler te esta sugiriendo poner el Id del alumno junto con el valor en cada propiedad value pues como que no comulgo con ello, ¿por qué no poner de NOMBRE el ID y dejas el value con la calificación como asume el código que puse?

Quizá el que ahora no entiende soy yo
Si usa de nombre el id del usuario, cuando despliegue el select tendrá que ponerse a contar hasta que llegue a la opción que busca. Como dije en un post anterior puede que me equivoque, ya que no lo he probado, pero creo que control es el nombre del campo, si me equivoco, entonces todo esto no tiene punto

Un saludo

Edito: Justamente a eso me referí. Lo que sugiere @Myakire, creo que es algo como esto
Cita:
<option value=""0"">"&recordset.fields("Matricula")&"</option>
<option value=""1"">"&recordset.fields("Matricula")&"</option>
<option value=""2"">"&recordset.fields("Matricula")&"</option>
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 22/09/2010 a las 07:47
  #13 (permalink)  
Antiguo 22/09/2010, 16: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, 3 meses
Puntos: 146
Respuesta: Coger valores al mismo tiempo



Me da miedo pensar que eso es lo que di a entender ...

Copia y pega esto en un archivo .asp y correlo, eso es lo que quería decir:

Código ASP:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <%
  3. if request("btn")<>"" Then
  4.    for each control in request.form
  5.        for indice=1 to request.form(control).count
  6.            Response.write ("UPDATE alumnos_cal SET Calificacion = " & request.form(control)(indice) & " WHERE idAlumno = " & control & "<br>")
  7.        next
  8.    next
  9. End if
  10. %>
  11. <html>
  12. <head>
  13. <title>Page title</title>
  14. </head>
  15. <body>
  16. <form method="post">
  17. <%
  18. vecUsuarios = array("juan", "pedro", "luis", "hugo", "sandra", "verónica")
  19. For Cnt=1 To UBound(vecUsuarios)
  20. %>
  21. Usuario <%=vecUsuarios(Cnt)%>
  22. <select name="Cal_de_<%=vecUsuarios(Cnt)%>">
  23. <%For i=0 To 10%>
  24. <option value="<%=i%>"><%=i%></option>
  25. <%Next%>
  26. </select>
  27. <br>
  28. <%Next%>
  29.  
  30. <input name="btn" style='background-color:#0B5795;border-color:#0C3DAF:;width: 25px;font-family: verdana;border: 1px solid #103EF5;color: #FFFFFF;font-weight: bold;font-size: 10px;' type='submit' value='OK'>
  31. </form>
  32.  
  33.  
  34. </body>
  35. </html>

La idea es que con un solo botón se generen todas las intrucciones que actualicen la calificación de cada alumno
  #14 (permalink)  
Antiguo 23/09/2010, 04:30
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Coger valores al mismo tiempo

Blanco y en botella? Ahhhh, orchata!!!
Muy bueno!!
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #15 (permalink)  
Antiguo 23/09/2010, 09:00
Avatar de Batan  
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 408
Antigüedad: 13 años, 7 meses
Puntos: 63
Respuesta: Coger valores al mismo tiempo

Gracias me va a servir como orientacion. Como valor de esa variable podria poner recordset.fields("Nombre") ya que los campos se guardan en una base de datos en el que pueden anadir nuevos registros.

Tengo bien echo la primera de las pruebas que hice.
http://angelgon.brinkster.net/Prueba-3/alumno_registrado.asp

Creeis que podria poner algo mas?Lo digo para practicar.
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 05:22.