Foros del Web » Programando para Internet » PHP »

subir imagenes antes de crear registro en BBDD

Estas en el tema de subir imagenes antes de crear registro en BBDD en el foro de PHP en Foros del Web. Estoy realizando algo parecido a una tienda web donde un apartado consiste en crear artículos. Al acceder al formulario para crear el artículo, a parte ...
  #1 (permalink)  
Antiguo 16/12/2009, 06:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta subir imagenes antes de crear registro en BBDD

Estoy realizando algo parecido a una tienda web donde un apartado consiste en crear artículos. Al acceder al formulario para crear el artículo, a parte de todos los text inputs, existe una opción de subir imagenes ( link a subir_imagenes.php ). La imagenes las guardo en un directorio que creo cuando creo el artículo basado en el id del artículo. El problema consiste en que no puedo subir imagenes si todavía no se ha creado el artículo, por que el directorio no existe. Me pregunto como lo puedo hacer de forma que pueda subir imagenes y verlas antes de crear el artículo.

Supongo que una opción es crear una carpeta temporal y guardarlas allí, para luego insertarlas en el correspondiente directorio.

Para que os hagais una idea, la aplicación esta formada de la siguiente forma:

crear_artículo.php ( Formulario para crear un artículo )

nombre:
descripcion:
...
galeria : ENLACE A SUBIR_IMAGENES.php

subir_imagenes.php ( Formulario para subir fotos )


¿Alguien sabe si hay mejor forma de implementar lo dicho? ¿ O estoy bien encaminado?

Grácias
  #2 (permalink)  
Antiguo 16/12/2009, 06:20
 
Fecha de Ingreso: abril-2003
Mensajes: 1.129
Antigüedad: 21 años
Puntos: 34
Respuesta: subir imagenes antes de crear registro en BBDD

En principio pensé lo mismo que dices, subir a una carpeta temporal y una vez previsualizada, darle el OK y que se mueva a su posición definitiva...

Ahora bien, nunca realice nada con esta función de subir archivos y decirle a dónde deben ir...

Mi pregunta, que quizás sea la "clave" para resolver tu problema... ¿No hay forma de crear el directorio y al mismo tiempo enviar la foto al mismo?
__________________
elGastronomo
  #3 (permalink)  
Antiguo 16/12/2009, 07:05
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: subir imagenes antes de crear registro en BBDD

Si que la hay. Yo estructuraría el código de la siguiente manera:

1.- Se envía el formulario.
2.- Se inserta el registro a la base de datos
3.- Recuperamos la ID del último producto insertado.
4.- Creamos la carpeta con la id del producto.
5.- Movemos el archivo temporal $_FILES['archivo']['tmp_name']; a su nueva carpeta y con el nombre original $_FILES['archivo']['name'];
6.- No hay 6 jeje.

Si necesitas el código un poco más detallado solo pídelo.
  #4 (permalink)  
Antiguo 16/12/2009, 08:00
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Respuesta: subir imagenes antes de crear registro en BBDD

Grácias por las respuestas...

Una duda: en el punto 5 se supone que la forma para recuperar las imagenes que se encuentran el la carpeta temporal, es a través de la función copy, no? Es decir, mi problema es que en ese punto yo no tengo $_FILES, puesto como comente, el proceso de subir las imagenes lo hago en un script diferente y, por tanto, cuando envio el form principal, las imagenes no estarán disponibles en $_FILES, por que no existe.

No tengo del todo claro ese punto. Y de la forma que me dices, ¿ Se pueden subir varias imagenes al mismo tiempo, verdad?

Espero solucionar esto :)

Muchas grácias de antemano!!
  #5 (permalink)  
Antiguo 16/12/2009, 08:51
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: subir imagenes antes de crear registro en BBDD

Si puede pasarme el código te lo agradeceria. Por que creo que lo estoy haciendo de forma diferente.

Creo que tu no previsualizas las imagenes, ¿Verdad?

Un saludo
  #6 (permalink)  
Antiguo 16/12/2009, 09:02
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: subir imagenes antes de crear registro en BBDD

¿Y porqué no envias las imágenes en el mismo formulario que el texto? Así lo tendrás todo disponible.

La otra opción que se me ocurre es que subas las imágenes en una carpeta con un nombre temporal y cuando tengas el producto creado puedes renombrar la carpeta con la id del producto.
  #7 (permalink)  
Antiguo 16/12/2009, 09:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: subir imagenes antes de crear registro en BBDD

He estado pensando y creo que voy a enviar las imagenes en la misma página que el texto. Lo que no me gusta de esta idea, es el hecho de estar enviando el texto constantemente ( a través del form ) cada vez que subamos una imagen, para no guardar nada, sólo por el hecho de guardar una imagen.

Puesto que me gusta la idea de subir sólo lo necesario, se me ha ocurrido lo siguiente:

Teniendo como partida que texto y imagenes estan en la misma página...

1.- Cóloco un iframe para visualizar las imagenes
2.- Si se sube una imagen, a través de javascript envio el formulario con la imagen unicamente al iframe. El código se encarga de visualizar las imagenes que se guardan en la carpera temporal
3.- Cuando toda el formulario este completo, se envia a la página destino.
4.- Se guarda el registro en la base de datos
5.- obtendo el id ( insert_id() )
6.- Copio las imagenes de la carpeta temporal al directorio de destino o bien, como tu has dicho, renombro la carpeta

¿Te gusta la idea? Creo que está muy bien, sobretodo el hecho de no recargar la página cada vez que subes una imagen.

Y otra cosa, para borrar las carpetas temporales que se van creando, ¿utilizas o utilizarias un script automatica ( ej: por la noche ), para borrar dichas entradas?

Bueno espero que me comentes a ver que te parece la idea

Gracias :)
  #8 (permalink)  
Antiguo 16/12/2009, 09:34
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: subir imagenes antes de crear registro en BBDD

Me parece buen planteamiento. Respecto al tema de borrar las carpetas temporales si las renombras con la id del producto ya no tienes que borrarlas pero si utilizas las temporales creo que las borraria cuando muevo las imágenes a no ser que tengas que introducir un número muy grande de información.
  #9 (permalink)  
Antiguo 16/12/2009, 10:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: subir imagenes antes de crear registro en BBDD

Imagina que estas subiendo imagenes para un artículo que todavía no ha sido creado. Y al final decider no dar de alta el artículo. En el sistema de archivos hay una carpeta termporal con imagenes que no hemos renombrado porque al final no se dio de alta el artículo. A estas carpetas me refiero yo!! Como borrarlas. ¿Script automático? y otra cosita:¿Que nombre le das a las carpetas temporales para luego recuper su info? ¿nombre_usuario? Con esta podria haber problemas en caso de tener habiertos dos sessiones el mismo usuario. Pero identificarlas con session_id no es recomendable...
  #10 (permalink)  
Antiguo 16/12/2009, 13:03
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: subir imagenes antes de crear registro en BBDD

Ah, tienes razón. Podrías aplicar un script automático cada cierto tiempo (¿15 días?) para borrar las que no se han renombrado. Además supongo que podrías recuperar la fecha de creación o modificación de la carpeta para no eliminar les que se crearon el dia anterior o algo así.

Respecto al nombre de las carpetas temporales podria ser una combinación de nombre de usuario y fecha de creacion, o bien con la función time(); y así te aseguras que sean distintas y puedes identificarlas.
  #11 (permalink)  
Antiguo 17/12/2009, 10:24
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Sonrisa Respuesta: subir imagenes antes de crear registro en BBDD

Muchisimas grácias por todo!! :)

Estoy trabajando en ello y ya está bastante adelantado.

Cuando lo tenga terminado lo subire por si alguien esta interesado

Gràcias. Un saludo
  #12 (permalink)  
Antiguo 17/12/2009, 13:20
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Respuesta: subir imagenes antes de crear registro en BBDD

Osdiwe una cosita mas:

Como controlas si dos usuarios insertan al mismo tiempo un registro e BBDD y al obtener el mysql_insert_id, se intercambian y por tanto renombraria las carpetas erroneamente!!

¿Tengo que utilizar que bloquear las querys con GET_LOCK y RELEASE_LOCK? Es decir, ¿tendrían que ejecutarse de forma asincrona?
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 10:37.