¿Como agregar un insert a varias tablas?

  • Autor Autor jeffvv
  • Fecha de inicio Fecha de inicio
jeffvv

jeffvv

Delta
Domainer
Verificación en dos pasos activada
Buenas betas, ando necesitando de su ayuda ya que no soy bueno con el php y actualmente quiero agregar la informacion enviada por un formulario a 2 tablas relacionadas por el idUsers

Mi codigo php actual para agregar a la tabla users es asi (funciona bien):
PHP:
<?php

//nos conectamos a la BD

require'class/database.php';
$objData = new Database();

//print_r($_POST);
//
$selectOption = $_POST['profile'];

$sth = $objData->prepare('INSERT INTO users (idUsers, loginUsers, passUsers, idProfile) values (:idUsers, :loginUsers, :passUsers, :idProfile) ');

$idUsers = '';
$loginUsers = $_POST['loginUsers'];
$passUsers = $_POST['passUsers'];
$idProfile = $_POST['profile'];

$sth->bindParam(':idUsers', $idUsers);
$sth->bindParam(':loginUsers', $loginUsers);
$sth->bindParam(':passUsers', $passUsers);
$sth->bindParam(':idProfile', $idProfile);

$sth->execute();

header('location: index.php');

Pero necesito agregar a la tabla user_data estos datos:

PHP:
$sth = $objData->prepare('INSERT INTO user_data (id_data, names, U_fechaAgregado, emailUser, idUsers) values (:id_data, :names, :U_fechaAgregado, :emailUser, :idUsers) ');

$id_data = '';
$names = $_POST['nombre'];
$U_fechaAgregado = $_POST['email'];
$emailUser = $_POST['fagregado'];

$sth->bindParam(':id_data', $id_data);
$sth->bindParam(':names', $names);
$sth->bindParam(':U_fechaAgregado', $U_fechaAgregado);
$sth->bindParam(':emailUser', $emailUser);

Pero no se como juntarlos para que se envien ambos a la vez ya que todos esos datos son enviados por 1 solo formulario. Gracias de antemano :encouragement:
 
[MENTION=111097]jeffvv[/MENTION] Si el formulario envía todos los datos que necesitas por que no ejecutas una y después la otra?
 
Sabes de sql? yo es que de php no sé mucho pero he visto las instrucciones sql que tienes ahí, y quizá con un procedimiento almacenado o una transacción podrías hacer algo... o en la base de datos lo creas y haces para que al añadir el primer insert, también se agregue el segundo con un trigger...
 
Sabes de sql? yo es que de php no sé mucho pero he visto las instrucciones sql que tienes ahí, y quizá con un procedimiento almacenado o una transacción podrías hacer algo... o en la base de datos lo creas y haces para que al añadir el primer insert, también se agregue el segundo con un trigger...

Con un trigger la veo difícil (ya que por lo que veo son datos diferentes), lo mejor sería con el procedimiento.
 
Con un trigger la veo difícil (ya que por lo que veo son datos diferentes), lo mejor sería con el procedimiento.

No tiene que ver que sean datos diferentes... Puede crear los campos antes en la tabla que quiera y hacerlo desde el trigger.

Otra opción es hacerlo en procedimiento, y luego con un trigger llamar al procedimiento en after insert, por ejemplo.
 
No tiene que ver que sean datos diferentes... Puede crear los campos antes en la tabla que quiera y hacerlo desde el trigger.

Otra opción es hacerlo en procedimiento, y luego con un trigger llamar al procedimiento en after insert, por ejemplo.

Me refiero a que en un trigger solo puedes acceder a los datos que se están insertando, modificando en ese INSERT/UPDATE, si son datos diferentes de dónde los vas a sacar para insertarlos en la otra tabla?

Por ejemplo, en una estas insertando nombre, apellido, en el trigger puedes acceder a NEW.nombre, NEW.apellido, pero si en la otra ocupas insertar teléfono, de dónde lo vas a sacar? Si fueran los mismo datos no habría problema, pero si son diferentes no hay manera de que los consiga de ahí mismo.
 
Última edición:
Me refiero a que en un trigger solo puedes acceder a los datos que se están insertando, modificando en ese INSERT/UPDATE, si son datos diferentes de dónde los vas a sacar para insertarlos en la otra tabla?

Por ejemplo, en una estas insertando nombre, apellido, en el trigger puedes acceder a NEW.nombre, NEW.apellido, pero si en la otra ocupas insertar teléfono, de dónde lo vas a sacar? Si fueran los mismo datos no habría problema, pero si son diferentes no hay manara de que los consiga de ahí mismo.

Me has pillado, te doy la razón, es que suspendí ese examen pero algo se me quedó xD
 
Gracias a todos por sus respuestas, tratare de buscar para hacerlo con un procedimiento
 
Atrás
Arriba