entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Muy buenas de nuevo!!!

Espero puedan darme algunas soluciones, para hacer esto de la mejor forma.

Tengo un problema que yo quiero que usuario que visite mi pagina puedar subir una imagen o un video sin tener que haber escrito previamente el texto aunque el texto es obligatorio.

Mi estructura de base datos es con las siguientes tablas:

-mensajes
-fotos
-videos

La de fotos y vídeos las relacionados directamente con el campo id_mensaje.

Ahora mi pregunta es como en el titulo cual es la mejor forma de hacer que los usuario puedan subir una foto si haber escrito el mensaje teniendo en cuenta que no va poder guardar el mensaje sin haber escrito antes el mensaje, también hay que tener en cuenta que usuario puede subir la foto y abandonar la pagina.

Que soluciones tengo?

Un cordial saludo a todos y espero haberme explicado correctamente.

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola José,

para este escenario que planteás, tenés que guardar la foto y/o video en un almacenamiento temporal, y solo si se carga el texto y se valida todo como corresponde, pasarlo al almacenamiento definitivo.

Este almacenamiento temporal puede ser tanto unas tablas similares a la definitiva pero sin las reglas de integridad, como un direcotrio creado aleatoriamente para poner los archivos subidos mientras dura el proceso de alta de los datos.

En ambos casos podés almacenar en una sesión el identificador de los datos temporales, para luego usarlos para acceder a los mismos y pasarlos al almacenamiento definitivo. En el primer caso serán ID de tablas y en el segundo rutas de archivos.

En ambos casos, luego de terminar el proceso bien o mal, tenés que borrar el almacenamiento temporal.

Happy Hacking!

1voto

chiqui3d comentado

Hola Leonardo,

Gracias como siempre por estar ahí,

Entiendo el proceso, pero no se como relacionaría que esa session de datos temporales o la fila en la tabla temporal que se ha creado tiene que ver con la que se va ha crear?

Es decir si sube una foto o video creo una session,fila y carpeta tal que así:

$_session['idtemporal']=$idusuario."-".date("Y-m-d H:i:s");

Fuss que va me he atascado no se como relacionarlo despues cuando le de a enviar el mensaje y enviarlo al tabla definitiva.
Puedes ayudarme.........

0voto

Leonardo-Tadei comentado

Hola José,

es más simple de lo que parece.

Supongamos que guardás el archivo en una tabla temporal en el paso 1 del formulario. Al crear el registro en la tabla temporal, obtenés el ID y lo guardás en una variable de sesión:

...
$_SESSION['id_temporal'] = $ultimo_id;
...
Luego en el paso 2 pedirás el texto y demás cosas para validarlas. Al momento de guardar, harás primero un SELECT para obtener el dato temporal:

...
$sql = "SELECT * FROM Temporal" WHERE id={$_SESSION['id_temporal']}";
...

y usarás el valor devuelto por la consulta para hacer el INSERT en la tabla definitiva.

Si en cambio usás para almacenamiento temporal un diretorio, tendrás que guardar en la variable de sesión la ruta a los archivos temporales (en lugar del ID para hacer el SELECT a la tabla temporal) para recobrar la información y hacer el INSERT definitivo.

Te van a hacer falta un par de variables de sesión, ya que por la estructura, supongo que no es lo mismo guardar una imagen que un video, pero el proceso es similar.

Salu2!

0voto

chiqui3d comentado

Ahora estoy pensando en cuando suba una foto o video por javascript entregar el idtemporal en un

<input type="hidden" name="idtemporal"  value="entregado desde javascript al subir foto o video"/>

1voto

chiqui3d comentado

Muchas gracias pues es mas simple de lo que parecía voy hacer la prueba.

Un abrazo Leornado.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta