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

qué es lo ideal para subir multiples archivos a la vezq

Estas en el tema de qué es lo ideal para subir multiples archivos a la vezq en el foro de Programación General en Foros del Web. Hola a todos/as. tengo una duda y la verdad no sé cuál puede ser la solución ideal. a ver. Ahora mismo tengo una base de ...
  #1 (permalink)  
Antiguo 20/08/2008, 00:01
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
qué es lo ideal para subir multiples archivos a la vezq

Hola a todos/as. tengo una duda y la verdad no sé cuál puede ser la solución ideal. a ver. Ahora mismo tengo una base de datos en la cual hay una tabla llamémosla productos. En esta tabla productos están (para simplificar) un id de cada producto (que es autonumérico); un nombre del producto; las características del producto y la ruta de la imagen del producto, la cual (la imagen) se almacena en un directorio llamado imagenes, es decir, en esta tabla sólamente se recoge la ruta de la imagen. Por lo tanto tengo:

Tabla 'productos':
idproducto-------campo autonumérico
nombre-----------nombre del producto
caracteristicas--caracteristicas del producto
imagen-----------ruta de la imagen

el archivo de la imagen es almacenado en la carpeta 'imagenes' del servidor.

bien. mediante este sistema subo a través de un formulario los diferentes datos que alimentan esta tabla.

mi duda surge ahora con lo siguiente: supongamos que en lugar de subir una única imagen por producto, lo que yo quiero subir son 'x' imágenes, las que sean (unas veces serán 2, otras 5, otras 1....). y aquí es donde se me plantea la duda. (el tema de como subirlas está resuelto, mi duda va por saber cuál es la mejor solución al respecto):

primera opción:
seguir como hasta ahora, es decir, con la tabla 'productos', donde se irán almacenando esos datos y ahora en lugar de una ruta de la imagen que se subía hasta ahora habrá almacenadas tantas rutas como imagenes subamos asociadas al producto en cuestión. es decir, tendríamos:

Tabla 'productos':
idproducto-------campo autonumérico
nombre-----------nombre del producto
caracteristicas--caracteristicas del producto
imagen1-----------ruta de la imagen 1
imagen1-----------ruta de la imagen 2
.
.
.
imagen n-----------ruta de la imagen n

si tomo esta decisión, mi pregunta es ¿como hacer para que se creen tantos campos 'imagen' como imagenes suba en la tabla 'productos'? es decir, si subo una única imagen, que aparezca un campo imagen pero si subo tres imágenes por ejemplo, que aparezcan los campos imagen1, imagen2 e imagen3, que almacenarían las rutas de esas imágenes.

segunda opción:

la segunda opción es que en lugar de almacenar todas las imágenes en la tabla 'productos', crear una tabla nueva llamada 'imágenes' donde se irían almacenando las diferentes imágenes de cada producto y que estaría relacionada con la tabla 'productos'. Así me quedaría:

Tabla 'productos':

idproducto-------campo autonumérico
nombre-----------nombre del producto
caracteristicas--caracteristicas del producto

Tabla 'imagenes':

idimagen--------campo autonumérico de la imagen
imagen----------ruta de la imagen
idproducto_img-id del producto al que corresponde esa imagen

con esta solución no tendría el problema de tener que generar tantos campos 'imagen' como en el caso anterior puesto que se irían ingresando en el único campo 'imagen' pero aquí el problema vendría en sacar después los datos mediante consultas y mostrarlos conjuntamente, es decir, sacar los datos del producto 'X' (nombre y características) que están en la tabla 'productos' y a la vez las imágenes de la tabla 'imagenes' asociadas a ese producto 'X'. Podría hacerlo con INNER JOIN pero no es muy lioso todo?

espero vuestras sugerencias. gracias por todo...
  #2 (permalink)  
Antiguo 20/08/2008, 01:08
Avatar de desendoll  
Fecha de Ingreso: mayo-2008
Mensajes: 340
Antigüedad: 16 años, 6 meses
Puntos: 3
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

No me leído todo porqué hay mucho texto..., pero la mejor opción es separar las imágenes en otra tabla y ligarlo con una clave de idproducto.
A no ser que el numero de imágenes sea siempre 4 por ejemplo, o otro numero fijo, después utiliza la primera opción.
__________________
Francesc Jimenez
  #3 (permalink)  
Antiguo 20/08/2008, 01:40
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

La mejor solución es la segunda, en cuanto al inner join, no es tan lioso como parece, una vez haces un par de consultas, veras el poder que tiene :)

Decídete por la segunda opción, no te arrepentirás.
  #4 (permalink)  
Antiguo 20/08/2008, 02:32
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

gracias a los dos....si...definitivamente me había decidido por la segunda opción. la duda que me asalta con la segunda opción es la siguiente:

¿cuántas consultas tengo que realizar a la base de datos?

a ver, yo tengo pensado lo siguiente:

una primera consulta para mostrar los datos de la tabla producto del producto en cuestión que sea. esta primera consulta me dará los campos 'Nombre' y 'Caracteristicas'.

y una segunda consulta para mostrar las imágenes que tiene asociadas ese producto en cuestión y que están en la tabla imágenes. esta consulta se haría con el INNER JOIN.

es correcto este planteamiento? a fin de cuentas lo que quiero es mostrar una ficha del producto en cuestión con sus datos y sus imágenes asociadas.
  #5 (permalink)  
Antiguo 20/08/2008, 02:53
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

Cita:
Iniciado por estibaliz2006 Ver Mensaje
gracias a los dos....si...definitivamente me había decidido por la segunda opción. la duda que me asalta con la segunda opción es la siguiente:

¿cuántas consultas tengo que realizar a la base de datos?

a ver, yo tengo pensado lo siguiente:

una primera consulta para mostrar los datos de la tabla producto del producto en cuestión que sea. esta primera consulta me dará los campos 'Nombre' y 'Caracteristicas'.

y una segunda consulta para mostrar las imágenes que tiene asociadas ese producto en cuestión y que están en la tabla imágenes. esta consulta se haría con el INNER JOIN.

es correcto este planteamiento? a fin de cuentas lo que quiero es mostrar una ficha del producto en cuestión con sus datos y sus imágenes asociadas.

Con una sola consulta es suficiente, en esa consulta, debes usar inner join, si no sabes muy bien como hacerlo, pasate por el foro de mysql, o mirate algun manual, es sencillo, pero debes practicar :)

saludos y animo!
  #6 (permalink)  
Antiguo 20/08/2008, 04:19
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

gracias por tu inestimable ayuda DooBie. echare un vistazo más detenidamente al INNER JOIN
  #7 (permalink)  
Antiguo 20/08/2008, 05:43
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

bueno. entonces si no lo he entendido mal, para obtener la ficha de un producto con todos los datos (nombre, características e imagenes asociadas) que están en dos tablas diferentes la consulta sería la siguiente:

Código PHP:
SELECT FROM productos INNER JOIN imagenes ON productos.idproducto imagenes.idproducto_img 
esto me debería dar el nombre, características e imágenes asociadas a cada producto no?

y si hubiera que relacionar otra tabla más, 'categorías'? como sería la consulta entonces? las tablas quedarían así:

Tabla 'productos':

idproducto-------campo autonumérico
nombre-----------nombre del producto
caracteristicas--caracteristicas del producto
idcategoria_pto-categoría a la que pertenece el producto

Tabla 'categorias':

idcategoria-------campo autonumérico
nombrecat--------nombre de la categoría


Tabla 'imagenes':

idimagen--------campo autonumérico de la imagen
imagen----------ruta de la imagen
idproducto_img-id del producto al que corresponde esa imagen
  #8 (permalink)  
Antiguo 21/08/2008, 00:07
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

hola....alguna sugerencia?
  #9 (permalink)  
Antiguo 21/08/2008, 01:29
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

La consulta seria esa, aunque siempre es mejor poner el nombre de los campos que quieres en lugar del *.
Para lo de las categorias, pues pones otro INNER JOIN ... ON ....

Te digo lo primero (lo del *) por que es posible que tengas algun nombre igual en diferentes tablas (ej: id), entonces, cambias el SELECT * .... por SELECT productos.id AS prod_id, productos.nombre AS prod_nom, imagenes.id AS img_id, ....
La consulta seria mas larga, pero creo que es la mejor forma de evitar duplicidad de campos
  #10 (permalink)  
Antiguo 21/08/2008, 01:49
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

entonces a la consulta anterior habría que añadirle otro innerjoin con AND INNER JOIN categorias

es así?
  #11 (permalink)  
Antiguo 21/08/2008, 01:56
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

Cita:
Iniciado por estibaliz2006 Ver Mensaje
entonces a la consulta anterior habría que añadirle otro innerjoin con AND INNER JOIN categorias

es así?
El AND te sobra:

SELECT .... FROM ... INNER JOIN tbl ON a=b INNER JOIN tbl2 ON c=d.....

algo asi :)
  #12 (permalink)  
Antiguo 21/08/2008, 04:02
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

ok....gracias por todo DooBie....
  #13 (permalink)  
Antiguo 21/08/2008, 04:41
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

Cita:
Iniciado por estibaliz2006 Ver Mensaje
ok....gracias por todo DooBie....
de nada
  #14 (permalink)  
Antiguo 21/08/2008, 08:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: qué es lo ideal para subir multiples archivos a la vezq

Tema trasladado a Ingenieria de Software y Gestion de Proyectos.
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 23:10.