entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problemas al obtener select de un formulario

Estoy haciendo una aplicación web en java, el problema es que accedo con un usuario de tipo administrador y tiene un apartado de privilegios, en el cuál puedo cambiar los tipos de todos los usuarios registrados a estándar o administrador.

El problema es que como muestro en una tabla todos los usuarios que existen en la BD, me aparecen por cada fila un select con 2 opciones: administrador y estándar. Y pienso que al mandar por el formulario cualquier select sólo obtiene el primer dato que en este caso es administrador y siempre me llega lo mismo al jsp que me actualiza la BD y nunca me llega el valor de estandar, alguna sugerencia?

Muchas gracias!

0voto

Luiggi Mendoza comentado

Sería conveniente que compartas el código relevante de tu JSP para darte una ayuda más específica en tu problema.

0voto

danielreales7 comentado

Ya averigüe el problema, lo comenté más abajo, muchas gracias por todo!

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola Daniel,

por lo que describís, parece que tenés mal armado el formulario que muestra la tabla con los select para la edición.

Por el escenario que describís, o bien tenés que armar un formulario por fila (con un campo oculto con el ID del usuario y el tipo en un select), o un solo formulario para toda la tabla, pero con los select siendo un vector HTML para poder procesarlo del lado del servidor y hacer todos los cambios correspondientes.

Si nos envías el HTML que recibe el navegador, podemos confirmarte la suposición de que es un error en el formulario.

Saludos!

0voto

danielreales7 comentado

Mira he realizado esto mismo en otro proyecto diferente y me devuelve con request.getParameterValues("selec") un numero (en este caso el valor del for) y en request.getParameterValues("privilegios") me devuelve administrador o estandar, según lo que seleccione.

Pero en mi proyecto me sigue cambiando el tipo nada más que administrador y a estándar no lo devuelve nunca.

En mi proyecto tengo selec nada mas como name y en privilegios igual.

Y la sentencia que te puse antes también es la misma, así que no entiendo aún porque no me sale, porque debería de salir.

0voto

danielreales7 comentado

Ya sé de donde viene el fallo y es de la sentencia update:

String cadena2 = "UPDATE usuario SET tipo='"+tipo[x]+"' WHERE id='"+array[x]+"'";

No puede ser tipo[x], porque sino siempre me devuelve administrador que es el primer elemento que existe en tipo (en este caso porque el primer usuario es administrador), por eso es el problema, así que tengo que decir que en vez de tipo[x], que se posicione según el valor del otro array en el array tipo.

0voto

Leonardo-Tadei comentado

No te sigo... tipo[x] debería ser justamente el valor del vector tipo en la posición x, y por tanto como el for recorre todos los elementos del vector, cada tipo[x] asume el valor que le corresponde.

Te insisto en que parece que no estás recibiendo todos los valores a procesar, sino como si existiera una sola línea de la tabla HTML...

Si tenés un rato, me gustaría que cambies los name del formulario a select[] y a privilegios[], en el código que recibe los datos los rescibas como:

String[] selec = request.getParameterValues("selec");
String[] privilegios = request.getParameterValues("privilegios");

y nos envíes los valores que toman los vectores selec y privilegios

0voto

danielreales7 comentado

Ya lo he conseguido hacer, mira te comento:

En primer lugar tipo[x] como bien dices me recorre cada elemento dentro del for pero para esa consulta que estoy haciendo yo, estoy diciendo con tipo[x] que me coja el elemento 0 de tipo, es decir, en el array tipo me recoge todos los elementos que existen según los usuarios que haya y mi primer usuario en la base de datos es de tipo administrador y los demás estándar.

Entonces en el array tipo[x] tendría administrador la primera vez que recorre el for la segunda vez tendre estandar y así sucesivamente.

Para eso ya tengo otro array, en mi caso array[] y ahí voy almacenando los valores del checkbox.

Entonces lo que necesito es la siguiente línea para que me lo haga correctamente:

String cadena2 = "UPDATE usuario SET tipo='"+tipo[Integer.parseInt(array[x])-1]+"' WHERE id='"+array[x]+"'";

Ahí estoy diciendo que en el array tipo[] (tengo que parsear el otro array que es de String a entero para que me busque dentro de tipo el valor que recibo del checkbox en este caso el id de dicho usuario y menos 1, porque al hacer debugger en netbeans me fijé en las variables que me estaba cogiendo un valor de más como ya sabes) donde el id en la base de datos está almacenado en array[x].

Espero que lo hayas entendido y muchas gracias por todo! Llevo un largo día rayado pero al fin he conseguido sacar esto y acabar mi proyecto un saludo!

0voto

Leonardo-Tadei comentado

Hola Daniel,

Me alegra que lo hayas solucionado!
por tu planteo original, me parecía que los checkbox tenían un dato y los select tenían otro en tu HTML. Pasa a veces porque uno quiere plantear el problema de laforma más concisa posible, y luegoacemos asunciones sobre el contecto.

En cualquier caso, me alegra de veras que esta interacción te haya servido para ver qué debuguear y encontrar el erro.

Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta