PDA

Ver la versión completa : Filtros productos JSP



luis9rs
28-10-2010, 20:00
Hola! Estoy realizando una aplicacion web con JSP, tipo tienda online. Quiero realizar filtros por categorias de los productos de la tienda, para facilitar la navegabilidad al usuario. Pero para una determinada categoria se supone que no se cuantos tipos de productos va a haber, por lo que tengo que obtenerlos de la base de datos. El tema es ¿ como puedo hacer en una JSP para mostrar los tipos de una categoria(obtenidos de la base de datos) y que esos tipos me sirvan de filtro, es decir, mostrar los tipos como links y en la siguiente JSP mostrar solo los productos del tipo seleccionado al clicar en el link?

Un estilo a esto:
http://www.zara.com/webapp/wcs/stores/servlet/category/es/es/zara-sales/11017/Vestidos

Solo que sin saber a priori qué tipos de ropa de mujer va a haber.

Gracias por adelantado.
Salu2

hystd
28-10-2010, 21:24
No he entendido muy bien... puede que sea culpa mia, que llevo un dia muy espesito.

Una pregunta, ¿si supieras la cantidad de lo que andas buscando tendrías el problema resuelto? Si es así, usa un SELECT count(*) FROM ... y lo que te devuelva en el ResultSet lo metes en una variable local de tipo int en tu jsp, y a partir de ahí, ya haces el tratamiento con esa variable.

Un saludo.

luis9rs
28-10-2010, 22:38
Lo primero muchas gracias por contestar.
La cantidad la puedo conocer en cuanto haga la consulta a la base de datos,lo se (o bien con la consulta que tu dices o con otra consulta). Lo que no se es como hacer para que sobre los resultados de la consulta, el usuario pueda pinchar en uno de esos resultados y yo saber en la siguiente pagina sobre cual a pulsado. Para mostrar despues solo los resultados del tipo pulsado, es decir, realizar una especie de filtro.
¿Sabes como quiero decir?

hystd
29-10-2010, 01:46
Pues mediante GET, ya sea a través de un formulario, o directamente puesto en el link del objeto que quieres enlazar.

Así por ejemplo tendrías en tu pagina jsp algo así:



<% ResultSet res = null;
GestionProductos gprod = new GestionProductos(); //el constructor realizará la conexión a la BD...

res = gprod.listarElementos(); //este método tendrá la select a la BD...

while (res.next()){
<%=res.getString(1); //suponemos que la columna 1 es de tipo String... %>
<%=res.getInt(2); //lo mismo para el caso de que la columna 2 sea de tipo int... %>

<form action=otraPagina.jsp>
<input type="hidden" name="idProducto" value=x>
<input type="text" name="nombreProducto" value=<%=res.getString(1);%>
</form>
<%}
}%>


La x, marcada en negrita dentro del formulario sería un identificador único para ese producto. Lo ideal sería que en tu BD tuvieras en la tabla un código único por cada producto, tal vez la Primary Key, pero bueno, tampoco sé cómo tienes la BD diseñada. Si tu PK está formada por varios campos de la tabla, entonces en el formulario deberás poner tantos <input> como campos conste la PK, para así poder identificar de forma única al producto que el usuario ha seleccionado.

De esta forma, cuando el usuario haga click en un producto la URL sería de la forma:


http:// miservidor/otraPagina.jsp?idProducto=1234&nombreProducto=bocadilloSalchichon

En la página jsp que se llama desde el formulario (otraPagina.jsp, en el caso del ejemplo que he puesto), deberás hacer una recogida de parámetros, (si procede y bastante aconsejable, también un filtrado y parseo, para evitar ataques de delincuentes :p), de la siguiente forma:


<%
String parametro1, parametro2;

parametro1=request.getParameter("idProducto");
parametro2=request.getParameter("nombreProducto");

//tratamiento de los parametros.
//acceder a la BD si procede, en función del valor de los parametros.
%>

Nota que para el caso de la URL anterior, parametro1=1234, y parámetro2=bocadilloSalchichon. De esta forma puedes nuevamente instanciar desde esa JSP, un objeto de tipo "GestionProductos" y llamar al método "listarPanesParaBocadillo(idProducto)", el cual te dirá los distintos tipos de panes para bocadilloSalchichon.

En fin, no sé si te referías a esto. Espero que el ejemplo te sirva, y siento que a estas horas y con el dia que he tenido, no se me ocurra nada mejor que un bocadillo de salchichón que me está pidiendo el cuerpo :D

Un saludo.

luis9rs
29-10-2010, 13:11
Muchisimas gracias! Era justamente eso lo que queria. Ya lo he probado y funciona perfectamente! Finalmente no lo he hecho exactamente asi, sino con sesiones (cookies) y con un enlace en lugar de con form. Muchas gracias por darme la clave para hacerlo bien ;)
Salu2

hystd
29-10-2010, 17:13
De nada ;)