Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Subir noticia e imágenes a distintas tablas en el mismo envío.

Estas en el tema de Subir noticia e imágenes a distintas tablas en el mismo envío. en el foro de PHP en Foros del Web. Hola. Estoy haciendo pruebas con un sistema de noticias en php donde tengo por un lado la tabla noticias y por otro la tabla imágenes, ...
  #1 (permalink)  
Antiguo 30/03/2015, 00:01
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Subir noticia e imágenes a distintas tablas en el mismo envío.

Hola.

Estoy haciendo pruebas con un sistema de noticias en php donde tengo por un lado la tabla noticias y por otro la tabla imágenes, las cuales van relacionadas por el id_noticia.

Noticias
----------
id_noticia
titulo
descripcion

Imagenes
-------------
id_imagen
imagen
id_noticia

En el formulario de envío he preparado la consulta enviar noticia y cuando compruebo si esta se ha enviado correctamente a la vez que hago el envío de la imagen a la tabla imagen recogiendo el id_noticia de la noticia que acabo de enviar.

Código PHP:
Ver original
  1. <?php
  2. //Preparo la consulta a la base de datos
  3. //Enviar la noticia.                           
  4. $enviar_noticia="Insert into noticias (titulo,descripcion) values ('$titulo', '$descripcion')";
  5. //Ejecuto enviar noticias
  6. $ejecutar_enviar_noticia=mysql_query($enviar_noticia);
  7. //Si la noticia no se envía muestro error.
  8. if(!$ejecutar_enviar_noticia)
  9. {
  10.     echo "La noticia no se ha podido enviar. " . mysql_error();
  11. }
  12. else//Si la noticia se envía
  13. {                              
  14.     //Preparo la consulta para saber el id_noticia de la noticia enviada.
  15.     $c_id_noticia_enviada="Select id_noticia from noticias ORDER BY id_noticia DESC limit 1";
  16.     $e_id_noticia_enviada= mysql_query($c_id_noticia_enviada);
  17.     //Aquí la duda de recoger el último id enviado
  18.     while ($fila=mysql_fetch_array($e_id_noticia_enviada)) {
  19.         //echo "El id_noticia recien enviado o último es: " .$fila['id_noticia'];
  20.         $id_noticia_i = $fila['id_noticia'];
  21.         //Preparo la consulta para enviar la imagen con el id_noticia recien enviado.
  22.         $enviar_imagen="Insert into imagenes (imagen, id_noticia) values ('$nombre_imagen1', '$id_noticia_i')";
  23.         //Ejecuto enviar imagen a la tabla imágenes.
  24.         $ejecutar_enviar_imagen=mysql_query($enviar_imagen);
  25.         if(!$ejecutar_enviar_imagen)
  26.         {
  27.             echo "La imagen no se ha podido enviar. " . mysql_error();
  28.         }
  29.         else
  30.         {
  31.             echo "La imagen ha sido enviada correctamente.";                                       
  32.         }  
  33.     }// Fin Aquí la duda de recoger el último id enviado           
  34. }//Fin Si la noticia se envía              
  35. ?>

¿Es esa la manera correcta de recoger enviar a la vez el id_noticia recien enviado o no es muy fiable?

Saludos.
  #2 (permalink)  
Antiguo 30/03/2015, 14:53
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Subir noticia e imágenes a distintas tablas en el mismo envío.

Si quieres garantizar que sea atómica tu operación vas a requerir utilizar transacciones. Consulta el manual
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 31/03/2015, 00:26
 
Fecha de Ingreso: septiembre-2010
Ubicación: Reino Independiente Suizo_Andaluz (RISA)
Mensajes: 221
Antigüedad: 13 años, 7 meses
Puntos: 24
Respuesta: Subir noticia e imágenes a distintas tablas en el mismo envío.

muy buenas amigo
yo para recoger el id dado a la ultima inserccion utilizo lo siguiente:
Código PHP:
//inserto en la base de datos el nuevo articulo
    
if (mysql_query($instruccion0,$conexion0)){
    
//y asi recibo el último id
    
$ultimo_id mysql_insert_id($conexion0);
    }else{
    echo 
"La insercción no se realizó";
    } 
espero te sirva
__________________
kolectivo grafico deNA
www.kgdena.com
  #4 (permalink)  
Antiguo 01/04/2015, 09:29
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Subir noticia e imágenes a distintas tablas en el mismo envío.

Cita:
Iniciado por hhs Ver Mensaje
Si quieres garantizar que sea atómica tu operación vas a requerir utilizar transacciones. Consulta el manual
Hola de nuevo hhs, he estado mirando y creo que en cuanto me ponga de nuevo con POO utilizaré esa forma que dices, gracias.

Cita:
Iniciado por nikimoto Ver Mensaje
muy buenas amigo
yo para recoger el id dado a la ultima inserccion utilizo lo siguiente:
Código PHP:
//inserto en la base de datos el nuevo articulo
    
if (mysql_query($instruccion0,$conexion0)){
    
//y asi recibo el último id
    
$ultimo_id mysql_insert_id($conexion0);
    }else{
    echo 
"La insercción no se realizó";
    } 
espero te sirva
Hola nikimoto, me ha funcionado perfectamente, gracias.

Saludos.
  #5 (permalink)  
Antiguo 01/04/2015, 11:21
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Subir noticia e imágenes a distintas tablas en el mismo envío.

Cita:
Hola de nuevo hhs, he estado mirando y creo que en cuanto me ponga de nuevo con POO utilizaré esa forma que dices, gracias.
No es necesario que utilices POO, solo cambia la extensión que usas por la de mysqli que ya soporta las transacciones: http://php.net/manual/en/book.mysqli.php además de que puedas usarla con su interfaz estructurada u orientada a objetos tu eliges.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 01/04/2015, 12:37
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Subir noticia e imágenes a distintas tablas en el mismo envío.

Hola.

Pues una vez terminada mis pruebas actuales en la versión antigua este será mi próximo objetivo, renovar y pasar a mysqli.

De nuevo gracias, un saludo.

Etiquetas: distintas, formulario, mysql, noticia, select, sql, tabla, tablas
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 11:31.