Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Modificar sólo un registro

Estas en el tema de Modificar sólo un registro en el foro de Java en Foros del Web. Buenas, tengo un pequeño problema para modificar solo una de las filas que tengo. Tengo el siguiente código: Código: <form method="post" action="modificarRopa"> <c:forEach var="x" items="${requestScope.ropak}"> ...
  #1 (permalink)  
Antiguo 02/02/2016, 04:02
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 9 meses
Puntos: 2
Modificar sólo un registro

Buenas,

tengo un pequeño problema para modificar solo una de las filas que tengo.
Tengo el siguiente código:
Código:
<form method="post" action="modificarRopa">
	<c:forEach var="x" items="${requestScope.ropak}">
		<table>
			<tr>
				<td>
					<input type="text" size="35" name="nombreRopa" value="${x.nombreRopa}">
				</td>
				<td>
					<input type="text" name="precioRopa" value="${x.precioRopa}">
					<input type="hidden" name="idropa" value="${x.idropa}">
				</td>
				<td><input type="submit" name="submit" value="Modificar"></td>
			</tr>
		</table>
	</c:forEach>
</form>
Esto me da una lista con el nombre y el precio de esa ropa.
Lo que yo quiero es que cuando le de al modificar de esa misma fila me actualice nombre y precio de esa misma fila.
El problema que tengo es que le de a la fila que le de para modificar me coge todas las filas. Es decir no sé bien cómo tratar ese submit

Un saludo
  #2 (permalink)  
Antiguo 02/02/2016, 10:12
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Modificar sólo un registro

Bueno, pues ya lo he resuelto a medias.
En el servlet he hecho esto:
Código:
		String[] modificar=req.getParameterValues("modificar");
		String[] precioRopa=req.getParameterValues("precioRopa");
		String[] nombreRopa=req.getParameterValues("nombreRopa");
		String[] idropa=req.getParameterValues("idropa");
		
		RopasFacade facade=new RopasFacade();
		
		int md=0;
		for(int i=0;i<modificar.length;i++){
			md=Integer.parseInt(modificar[i]);
			facade.updateRopa(Integer.parseInt(idropa[md-1]), nombreRopa[md-1], Float.parseFloat(precioRopa[md-1]));
		}
El problema con esto es que el botón que envía el formulario pone el valor de número, y yo quiero que ponga modificar. Para eso, he hecho lo siguiente:
Código:
<input type="button" name="asd" value="Modificar" onclick="javaScript:enter(this.form.modificar)">
					<input type="submit" name="modificar" value="${x.idropa}" style="display:none">
Código:
	function enter(oFormulario){
		if(confirm("Esta seguro de que desea modificar???"))
			oFormulario.click();
	}
Creo un botón que se supone que al pulsarlo va a hacer de submit
Me hace la pregunta de si deseo modificar, pero no hace el click, por lo que no sé muy bien qué es lo que habría que hacer.

Alguna sugerencia???
  #3 (permalink)  
Antiguo 03/02/2016, 11:21
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Modificar sólo un registro

Prueba con esto,

Código:
<form method="post" action="modificarRopa">
	<c:forEach var="x" items="${requestScope.ropak}">
		<table>
			<tr>
				<td>
					<input type="text" size="35" id="nombreRopa${x.idropa}" name="nombreRopa${x.idropa}" value="${x.nombreRopa}">
				</td>
				<td>
					<input type="text" id="precioRopa${x.idropa}" name="precioRopa${x.idropa}" value="${x.precioRopa}">
					<input type="hidden" id="idropa${x.idropa}" name="idropa${x.idropa}" value="${x.idropa}">
				</td>
				<td>
<input type="button" name="btnEnviar" value="Modificar" onclick="javaScript:jsModificar('{x.idropa}')"></td>
			</tr>
		</table>
	</c:forEach>
<input type="hidden" id="idropa" name="idropa" value="">
<input type="hidden" id="nombreRopa" name="nombreRopa" value="">
<input type="hidden" id="precioRopa" name="precioRopa" value="">
</form>

Aqui ya tienes los valores del registro que quieres modificar, puedes enviar esto con otros campos del formulario

Código:
	function jsModificar(idRopa){
                var form = document.forms[0];               
                var nombreRopa= document.getElementById('nombreRopa'+idRopa).value;
                var precioRopa= document.getElementById('precioRopa'+idRopa).value;
                form.getElementById('idropa').value=idRopa;
                form.getElementById('nombreRopa').value=nombreRopa;
                form.getElementById('precioRopa').value=precioRopa;
                form.submit();
	}
y en el servlet solo recuper esos 3 campos y actualizarlos directamente

Código:
		String precioRopa=req.getParameterValues("precioRopa");
		String nombreRopa=req.getParameterValues("nombreRopa");
		String idropa=req.getParameterValues("idropa");
		
		RopasFacade facade=new RopasFacade();
		
		facade.updateRopa(Integer.parseInt(idropa), nombreRopa, Float.parseFloat(precioRopa));
He hecho esto al vuelo sin probar, pero la idea es mas o menos esa, plasmalo en tu codigo y me avisas como te fue, sino seguimso viendolo.

Saludos
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #4 (permalink)  
Antiguo 05/02/2016, 04:49
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Modificar sólo un registro

Bien, estoy probando y no funciona.
He corregido una cosita que al hacer el onclick faltaba el $ para pasar el número
Código:
onclick="javaScript:jsModificar('${x.idropa}')"
Estoy haciendo un alert para ver si lo coge y el idropa lo coge bien:
Código:
	var form = document.forms[0];               
        var nombreRopa= document.getElementById('nombreRopa'+idRopa).value;
        var precioRopa= document.getElementById('precioRopa'+idRopa).value;
	alert(idRopa);
        form.getElementById('idropa').value=idRopa;
        form.getElementById('nombreRopa').value=nombreRopa;
        form.getElementById('precioRopa').value=precioRopa;
        form.submit();
Pero ya si pongo el alert después en la siguiente línea ya no funciona por lo que algún problema hay por ahí. Voy a investigar un poco

Edito: Ya funciona, el problema era que donde pone form.getElemenById hay que poner document. El form.submit funciona bien.
Si me permites una pregunta lo que no entiendo el esto
Código:
   var form = document.forms[0];

Última edición por elpre; 05/02/2016 a las 10:21 Razón: Ahora funciona
  #5 (permalink)  
Antiguo 05/02/2016, 14:42
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Modificar sólo un registro

Hola

Como te dije lo hice a la volada, no me fije que me habia equivocado en esa parte.

La parte del codigo que mencionas, aqui lo que hago es recuperar el primer formulario de la pagina, para que de ahi puedas acceder a todos sus controles.

Me comentas si llegaste a solucionar todo tu problema.

Saludos
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #6 (permalink)  
Antiguo 08/02/2016, 09:06
 
Fecha de Ingreso: junio-2011
Mensajes: 151
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Modificar sólo un registro

Sí sí, parece que todo correcto, hace lo que quiero y como quiero así que muchas gracias

Etiquetas: jsp
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 03:15.