Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   qué es lo ideal para subir multiples archivos a la vezq (http://www.forosdelweb.com/f14/que-ideal-para-subir-multiples-archivos-vezq-616686/)

estibaliz2006 20/08/2008 00:01

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...:corazon::corazon::corazon:

desendoll 20/08/2008 01:08

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.

DooBie 20/08/2008 01:40

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.

estibaliz2006 20/08/2008 02:32

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.

DooBie 20/08/2008 02:53

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

Iniciado por estibaliz2006 (Mensaje 2541157)
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!

estibaliz2006 20/08/2008 04:19

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

estibaliz2006 20/08/2008 05:43

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

estibaliz2006 21/08/2008 00:07

Respuesta: qué es lo ideal para subir multiples archivos a la vezq
 
hola....alguna sugerencia?:corazon::corazon::corazon:

DooBie 21/08/2008 01:29

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

estibaliz2006 21/08/2008 01:49

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í?

DooBie 21/08/2008 01:56

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

Iniciado por estibaliz2006 (Mensaje 2542756)
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 :)

estibaliz2006 21/08/2008 04:02

Respuesta: qué es lo ideal para subir multiples archivos a la vezq
 
ok....gracias por todo DooBie....:corazon::corazon::corazon::corazon:

DooBie 21/08/2008 04:41

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

Iniciado por estibaliz2006 (Mensaje 2542837)
ok....gracias por todo DooBie....:corazon::corazon::corazon::corazon:

de nada

GatorV 21/08/2008 08:32

Respuesta: qué es lo ideal para subir multiples archivos a la vezq
 
Tema trasladado a Ingenieria de Software y Gestion de Proyectos.


La zona horaria es GMT -6. Ahora son las 08:22.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.