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

MySQL + JSP

Estas en el tema de MySQL + JSP en el foro de Java en Foros del Web. Hola a todos, Estoy haciendo una aplicacion con JSP y MySQL. Ya tengo varias partes mas o menos hechas. En pocas palabras lo que hago ...
  #1 (permalink)  
Antiguo 11/05/2008, 16:13
pta
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 16 años, 6 meses
Puntos: 0
MySQL + JSP

Hola a todos,

Estoy haciendo una aplicacion con JSP y MySQL. Ya tengo varias partes mas o menos hechas. En pocas palabras lo que hago es subir archivos a un servidor, grabarlos en el disco y quedarme con el nombre del archivo para guardarlo en una base de datos.

Una vez hecho esto, en otra pagina, muestro los nombres de los archivos almacenados en la base de datos.

Es aqui cuando llega mi problema. A la hora de mostrar el contenido de la base de datos he añadido un checkbox a cada nombre de fichero. Mi intencion era marcar uno de los checkboxes y pasar el nombre del archivo a otro archivo .jsp para que lo procesase. Sin embargo al ver como funciona los checkboxes y radio buttons no veo que pueda pasar el nombre del archivo que marco.

El codigo mediante el cual muestro por pantalla el contenido de la base de datos, añadiendo los checkboxes es el siguiente:

<html>

<body>
<h1>Consulta a base de datos</h1>
<%
try
{
// Conexion con bd
Class.forName("com.mysql.jdbc.Driver").newInstance ();
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba","admin","admin");
if (!conexion.isClosed())
{
// La consulta
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("select * from chico" );

out.println("<form action=recibecheck.jsp method=post enctype=multipart/form-data>");

out.println("<table>");


out.println("<table border=\"1\"><tr><td>Id</td><td>Genero</td></tr>");
while (rs.next())
{
out.println("<tr>");
String k = rs.getString("name");
out.println("<td>"+"<input type=checkbox name=prueba >");
out.println("<td>"+k+"</td>");
out.println("</tr>");
}
out.println("</table>");

// cierre de la conexion
conexion.close();
}
else
// Error en la conexion
out.println("fallo");
}
catch (Exception e)
{
// Error en algun momento.
out.println("Excepcion "+e);
e.printStackTrace();
}
out.println("<tr><td colspan=2><input type=submit value=enviar name=enviar></td></tr>");
out.println("</table>");
out.println("</form>");
%>
</body>
</html>


¿Existe alguna forma para poder mostrar el contenido de una base de datos, selecionar un elemento y de alguna forma quedarme con el nombre? Lo he estado buscando, pero la verdad es que me he quedado un poco estancado...

Si alguien pudiese ayudarme le estaria muy agradecido.

Muchas gracias,

Un saludo
  #2 (permalink)  
Antiguo 12/05/2008, 00:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Re: MySQL + JSP

Cita:
<input type=checkbox name=prueba >
Si no le pones valor al checkbox ni tampoco le cambias el nombre, va a ser dificil que distingas cuando te han marcado un fichero u otro.
Lo normal sería que hicieras algo como

Cita:
<input type="checkbox" name="fichero" value="<%= name %>" >
Con eso al darle a enviar te mandaria un array de Strings con los nombres de los ficheros marcados. Lo recibirias con getParameterValues(). De todas formas, quiza lo mejor seria enviar la clave primaria del registro donde guardas el nombre del fichero, a no ser que tu clave primaria sea el nombre.

Igualmente, lo de mezclar todo junto el codigo de acceso a a BDD con el codigo que genera el HTML no se considera buena practica, excepto para cosas pequeñas. En cuanto la cosa crece un poco el mantenimiento se vuelve caotico.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 02/01/2009, 10:05
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: MySQL + JSP

perfecta la frma en q lo explicaste GreenEyed, faltaria decir como recibir cada uno de los parametos recibidos, si solo enviamos un valor perfecto, pero si seleccionamos varias casillas solo recibe el primero, si es un array de string seria perfecto el saber como recoger todos esos valores.
  #4 (permalink)  
Antiguo 02/01/2009, 12:44
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Re: MySQL + JSP

Citándome a mi mismo
Cita:
Iniciado por GreenEyed Ver Mensaje
Con eso al darle a enviar te mandaria un array de Strings con los nombres de los ficheros marcados. Lo recibirias con getParameterValues(). Lo recibirias con getParameterValues()
request.getParameter("nombre") sirve para recoger parametros con un solo valor. En cambio request.getParameterValues("nombre") sirve para recoger los valores de un parametro multiple, que en la URL salen como ...nombre=x&nombre=y&nombre=z...

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 02/01/2009, 16:11
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: MySQL + JSP

esto??? un ejemplo.... lo encontre foreando...
-------
Los checkbox pasan los parámetros "name" y "value" cuando se le da a "submit", si y sólo si se han marcado. Para distinguirlos, si tienes varios, nómbralos de modo diferente.

De este modo, si es una página estática la que genera tu lista de checkbox, pues los nombras manualmente. Problema: la lista de checks se construye dinámicamente (tirando de una BD). Solución: nombra a cada checkbox como "marcaX" donde X es un número incremental. Te pongo un ejemplo:

<%
int contador=0;
while(rs.next()){
//Bucle que pasa por los registros
contador++;
%>
<input type="checkbox" name="marca<%=contador%>">
<%

}//fin while
%>

de modo que a cada "loop" del while, te creará un checkbox llamado "marca1", "marca2"... etc. Así, ya puedes identificar los checkbox que el usuario marcó en la página.

Para ir más allá, si tienes un "id" como campo de la tabla y es unívoco, puedes utilizarlo para identificar tus checks. Si, como ejemplo, quieres mostrar un check con los libros que una persona quiere pedir prestados a la biblioteca, y cada libro tiene su "id_libro", puedes nombrar a los checks como

<input type="checkbox" name="marca<%=rs.getInt("id_libro")%>">

de este modo, sólo se pasarán las variables checkX a la siguiente página, donde X serán los "id_libro" de los libros que el usuario quería pedir prestados.

Para ver exactamente qué libros son, en la página que recoge esta petición, haz un substring del array de variables getParameterNames(); y, si contienen la cadena "marca", almacenas el número que le sigue en un array. Terminas teniendo un array con los "id_libro" que el usuario ha querido pedir prestado.
-----------
umh... que te parece, no me lo atribuyo, pero me parece genial esta solucion ...
  #6 (permalink)  
Antiguo 02/01/2009, 16:59
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: MySQL + JSP

Bueno probando las opciones, paso a explicar q yo no lo ejecuto en un servlet si no en un jsp, uso request.getParameterValues("activo") y lo que me sale es:[Ljava.lang.String;@1777d2d , usando el otro metodo, osea agregando el contador, simplemente uso:<input name="activo<%contador%>" type="checkbox" value="<%=bd.getCodUsuario()%>"> para enviar y para recibir:
<%=request.getParameter("activo1")%><br>
<%=request.getParameter("activo2")%><br>
<%=request.getParameter("activo3")%><br>
lo cual resulta, pero me parece poco practico, la verdad, quisiera saber como obtener la cantidad exacta de los checkboxs enviados, los valores de "activo", en mi caso, y si tengo q declarar alguna especie de array para meterlo ahi y luego no se la verdad es la parte donde me atasco totalmente!
  #7 (permalink)  
Antiguo 02/01/2009, 17:37
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: MySQL + JSP

Lo que dices en el primer caso, usando request.getParameterValues("activo"), es totalmente correcto. Lo unico que pasa es que has impreso directamente el array de Strings[] y en Java si haces eso te sale ese churro ininteligible.

Lo has de tratar como un array de Strings normal, con var_array.length obtienes el numero de elementos, con var_array[i] accedes al elemento número i... etc.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 02/01/2009, 17:46
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: MySQL + JSP

ya encontre la solucion perfecta: usando request.getParameterValues("activo")
en la siguiente pagina q recibe los valores pues solo hacer lo siguiente:
<%String[] Lista;
Lista = request.getParameterValues("activo");
for (int i=0; i<Lista.length; i++) {%>
<p><%=Lista[i]%></p>
<%}
%>
  #9 (permalink)  
Antiguo 19/04/2009, 10:27
 
Fecha de Ingreso: abril-2009
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: MySQL + JSP

Hola soy super nueva en el foro, tengo este codigo:<%@ page import="java.sql.*" %>

<html>

<body>
<%
try
{
// Conexion con bd
Class.forName("com.mysql.jdbc.Driver").newInstance ();
Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/bxmodeller","root","root");
if (!conexion.isClosed())
{
// La consulta
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery("select * from progetto" );

out.println("<form action=recibefor.jsp method=post enctype=multipart/form-data>");
out.println("<table>");


out.println("<table border=\"1\"><tr><td></td><td>Progetto</td></tr>");
while (rs.next())
{
out.println("<tr>");
String k = rs.getString("nome");
out.println("<td>"+"<input type=checkbox name=prueba value=" + rs.getInt("id_progetto") + ">");
out.println("<td>"+k+"</td>");
out.println("</tr>");
}
out.println("</table>");

// cierre de la conexion
conexion.close();
}
else
// Error en la conexion
out.println("fallo");
}
catch (Exception e)
{
// Error en algun momento.
out.println("Excepcion "+e);
e.printStackTrace();
}
out.println("<tr><td colspan=2><input type=submit value=enviar name=enviar></td></tr>");
out.println("</table>");
out.println("</form>");

%>
</body>
</html>

necesito que cada checkbox que sea marcado se elimne esa fila de la base de datos... alguien podria ayudarme, no se que información iria en el nuevo jsp al cual llamo recibefor
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:55.