Foros del Web » Programando para Internet » PHP »

Insertar registros a varias tablas de la Base de Datos

Estas en el tema de Insertar registros a varias tablas de la Base de Datos en el foro de PHP en Foros del Web. Saludos a la comunidad, hice un pequeño sitio en el que llevará un carrito de compras y un sistema de noticias, cada una de esas ...
  #1 (permalink)  
Antiguo 24/01/2009, 15:29
Avatar de ratmayor  
Fecha de Ingreso: noviembre-2005
Ubicación: Puerto La Cruz
Mensajes: 23
Antigüedad: 18 años, 5 meses
Puntos: 0
Exclamación Insertar registros a varias tablas de la Base de Datos

Saludos a la comunidad, hice un pequeño sitio en el que llevará un carrito de compras y un sistema de noticias, cada una de esas secciones debe tener fotografias, el carrito de compra fotografias del producto y las noticias fotografias que tengan que ver respectivamente.

Para que el sistema fuera eficiente cree las siguientes tablas:
STORE_ITEM (donde almaceno los productos, descripcion, marcar, precio)
NEWS (donde almaceno las noticias)
GALLERY (una tabla donde almaceno las fotografias de ambas secciones)

en la tabla GALLERY cree dos campos relacionales, uno que dice a que seccion pertenece y otro a que registro pertenece...

La pesadilla comienza cuando quiero cargar los datos, cual seria la forma mas eficiente de cargar los datos de por ejemplo: STORE_ITEM & GALLERY o NEWS & GALLERY?

Actualmente debo cargar la noticia o el producto antes y luego cargar las imagenes de esta forma:

Código PHP:
<?php
 
//Probaremos el ejemplo cargando un producto a la tienda...
 
$link mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Error al conectar: ' mysql_error());
}
mysql_select_db('mydb');
//Inserto los datos del producto
if(mysql_query("INSERT INTO store_item (trade,model,description,price,warranty) values ('ACME','Cohete','Cohete buscador de correcaminos','$1000','Ninguna')")){
 
//Si la consulta funciona...
 //Obtengo antes el ID del registro
 
$id mysql_insert_id(); 
 
//Cargo formulario para cargar imagenes
 
header("Location: formulario.php?mostrar=form_fotos&id=$id");
}
else{
 
//pero si no funciona...
 
'Error al conectar: ' mysql_error()
}
//Luego al cargar imagenes, teniendo el ID del registro se me hace mas facil =)
/*los campos section_id e item_id serán los que indiquen a quien pertenece
esta imagen, Como el ejemplo lo estamos haciendo con la tienda (store_item)
el campo section_id contendra "tienda" y el campo item_id contendrá el ID del
producto que cargamos anteriormente...*/
if(mysql_query("INSERT INTO gallery (section_id,item_id,imagen,file_name,file_type,file_size) values ('tienda','1','<BINARY>',cohete.jpg,image/pjpeg,3025)")){
 
//Si la consulta funciona...
 //Obtengo antes el ID del registro
 
$id mysql_insert_id(); 
 
//muestro la pantalla indicando que todo esta terminado
 
header("Location: formulario.php?mostrar=listo");
}
else{
 
//pero si no funciona...
 
'Error al conectar: ' mysql_error()
}
?>
Pero como ven, el proceso es como que muy engorroso, me gustaria hacer todo es en un solo proceso, espero que me puedan ayudar, saludos!
  #2 (permalink)  
Antiguo 24/01/2009, 15:49
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Insertar registros a varias tablas de la Base de Datos

Bueno tal ves seria bueno recurir a js pero te preguntaras como haci

<script>
function enviar(f) {
f.action = "control.php";
f.submit();
f.action = "insertar.php";
f.submit();
}

////////*********************//////////
<form method="post">
nombre:<input type="text" name="usuario" size="20" maxlength="256">
contraseña <input type="text" name="contrasena" size="20" maxlength="256">
<input type="submit" value="listo" onclick="enviar(this.form)">


</form>

Tal sea lo que quieras sino escribe de nuevo
  #3 (permalink)  
Antiguo 24/01/2009, 23:56
Avatar de ratmayor  
Fecha de Ingreso: noviembre-2005
Ubicación: Puerto La Cruz
Mensajes: 23
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Insertar registros a varias tablas de la Base de Datos

Cita:
Iniciado por majony Ver Mensaje
Bueno tal ves seria bueno recurir a js pero te preguntaras como haci

<script>
function enviar(f) {
f.action = "control.php";
f.submit();
f.action = "insertar.php";
f.submit();
}

////////*********************//////////
<form method="post">
nombre:<input type="text" name="usuario" size="20" maxlength="256">
contraseña <input type="text" name="contrasena" size="20" maxlength="256">
<input type="submit" value="listo" onclick="enviar(this.form)">


</form>

Tal sea lo que quieras sino escribe de nuevo
Ok, pero eso me serviria para enviar los datos de ambos formularios a ambas tablas con un solo clic? la idea es simplificar el proceso, actualmente tengo que cargar muchas veces la pagina...
  #4 (permalink)  
Antiguo 25/01/2009, 00:32
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Insertar registros a varias tablas de la Base de Datos

mmm, ok, por lo que veo haces las dos inserciones a dos diferentes tablas con dos diferentes archivos.

Según sé, no se puede insertar datos en dos tablas desde un mismo INSERT, lo que puedes hacer es unir los dos formularios en una misma página y después de hacer la primera inserción en store_item, haces la siguiente inserción en la tabla gallery tomando el ultimo id de la inserción de la tabla store_item. Un ejemplo simple sería más o menos así.

Código PHP:
<?php 
//recibo campos por post...

$sql "INSERT INTO store_item (trade,model,description,price,warranty) values ('ACME','Cohete','Cohete buscador de correcaminos','$1000','Ninguna')"

$id mysql_insert_id();

$sql2 "INSERT INTO gallery (section_id,item_id,imagen,file_name,file_type,file_size) values ('tienda','1','<BINARY>',cohete.jpg,image/pjpeg,3025)"

// de esta manera evitas el redireccionamiento con Location.

?>

<html>
<head>
</head/
<body>
<form>
//campos para store_intem


//campos para gallery
</form>


</body>
</html>
Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #5 (permalink)  
Antiguo 03/02/2009, 22:17
Avatar de ratmayor  
Fecha de Ingreso: noviembre-2005
Ubicación: Puerto La Cruz
Mensajes: 23
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Insertar registros a varias tablas de la Base de Datos

Definitivamente eres un genio! hice una pequeña funcion basada en lo que me enviaste y me quedo genial, gracias!
  #6 (permalink)  
Antiguo 10/02/2009, 19:40
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 10 meses
Puntos: 4
Respuesta: Insertar registros a varias tablas de la Base de Datos

Cita:
Iniciado por ratmayor Ver Mensaje
Definitivamente eres un genio! hice una pequeña funcion basada en lo que me enviaste y me quedo genial, gracias!
Por nada, estamos para ayudar.

Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
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 08:33.