Bienvenido a la sección de Preguntas y Respuestas, donde puedes plantear tus dudas e inquietudes técnicas y recibir respuestas de otros miembros de la comunidad. Si deseas consultar el foro anterior puedes hacerlo a través del enlace: Foro Anterior (Solo Lectura)

Problema al ingresar datos a tablas relacion referencial

0 positivos 0 negativos
1,015 vistas
Hola a todos, cordial saludo. Tengo un proyecto en el que necesito ingresar unos datos a 4 tablas relacionadas, el problema es que me inserta la información en la primera tabla y en las posteriores que tienen la clave foránea ningún registro. La base de datos es Mysql y las conexiones y formulario los hice con Dreamweaver. Tengo conocimientos someros y no había tenido problemas en manejar una sola tabla pero con varias y relacionadas con Dreamweaver no lo he podido hacer. Agradezco la orientación ya que he buscado información pero no hay algo que me saque del problema, lo que tengo entendido es que el problema son las id autoincrementales, desde ya mil gracias. Adjunto código de las tablas y PHP:

CREATE TABLE `radicacion` (
 `idradicacion` int(11) NOT NULL AUTO_INCREMENT,
 `radicacion` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 `instancia` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 `proceso` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 `subclase` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 `daterepar` date NOT NULL,
 `observacion` varchar(535) COLLATE utf8_spanish_ci NOT NULL,
 `matinm` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 `namepred` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 `classmed` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
 PRIMARY KEY (`idradicacion`),
 UNIQUE KEY `radicacion` (`radicacion`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

CREATE TABLE `demandante` (
 `iddatosdte` int(11) NOT NULL AUTO_INCREMENT,
 `dte` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `ccnitdte` varchar(20) COLLATE utf8_spanish_ci NOT NULL,
 `dirteldte` varchar(60) COLLATE utf8_spanish_ci NOT NULL,
 `iddte` int(11) NOT NULL,
 PRIMARY KEY (`iddatosdte`),
 KEY `iddte` (`iddte`),
 CONSTRAINT `demandante_ibfk_1` FOREIGN KEY (`iddte`) REFERENCES `radicacion` (`idradicacion`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

CREATE TABLE `apodte` (
 `idapodte` int(11) NOT NULL,
 `nameapodte` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `dirapodte` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `telapodte` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `emailapodte` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 KEY `idapodte` (`idapodte`),
 CONSTRAINT `apodte_ibfk_1` FOREIGN KEY (`idapodte`) REFERENCES `demandante` (`iddatosdte`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

CREATE TABLE `demandado` (
 `iddatosddo` int(11) NOT NULL AUTO_INCREMENT,
 `ddo` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `ccnitddo` varchar(20) COLLATE utf8_spanish_ci NOT NULL,
 `dirtelddo` varchar(60) COLLATE utf8_spanish_ci NOT NULL,
 `idddo` int(11) NOT NULL,
 PRIMARY KEY (`iddatosddo`),
 KEY `idddo` (`idddo`),
 CONSTRAINT `demandado_ibfk_1` FOREIGN KEY (`idddo`) REFERENCES `radicacion` (`idradicacion`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

CREATE TABLE `apoddo` (
 `idapoddo` int(11) NOT NULL,
 `nameapoddo` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `dirapoddo` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `telapoddo` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 `emailapoddo` varchar(40) COLLATE utf8_spanish_ci NOT NULL,
 KEY `idapoddo` (`idapoddo`),
 CONSTRAINT `apoddo_ibfk_1` FOREIGN KEY (`idapoddo`) REFERENCES `demandado` (`iddatosddo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

___________________________________________________________________________________

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO radicacion (radicacion, instancia, proceso, subclase, daterepar, observacion, matinm, namepred, classmed) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['radicacion'], "text"),
                       GetSQLValueString($_POST['instancia'], "text"),
                       GetSQLValueString($_POST['proceso'], "text"),
                       GetSQLValueString($_POST['subclase'], "text"),
                       GetSQLValueString($_POST['daterepar'], "date"),
                       GetSQLValueString($_POST['observacion'], "text"),
                       GetSQLValueString($_POST['matinm'], "text"),
                       GetSQLValueString($_POST['namepred'], "text"),
                       GetSQLValueString($_POST['classmed'], "text"));

  mysql_select_db($database_roldanillo, $roldanillo);
  $Result1 = mysql_query($insertSQL, $roldanillo) or die(mysql_error());
 

  $insertGoTo = "messagereg.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO demandante (dte, ccnitdte, dirteldte) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['dte'], "text"),
                       GetSQLValueString($_POST['ccnitdte'], "text"),
                       GetSQLValueString($_POST['dirteldte'], "text"));

  mysql_select_db($database_roldanillo, $roldanillo);
  $Result1 = mysql_query($insertSQL, $roldanillo) or die(mysql_error());
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO apodte (nameapodte, dirapodte, telapodte, emailapodte) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['nameapodte'], "text"),
                       GetSQLValueString($_POST['dirapodte'], "text"),
                       GetSQLValueString($_POST['telapodte'], "text"),
                       GetSQLValueString($_POST['emailapodte'], "text"));

  mysql_select_db($database_roldanillo, $roldanillo);
  $Result1 = mysql_query($insertSQL, $roldanillo) or die(mysql_error());
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO demandado (ddo, ccnitddo, dirtelddo) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['ddo'], "text"),
                       GetSQLValueString($_POST['ccnitddo'], "text"),
                       GetSQLValueString($_POST['dirtelddo'], "text"));

  mysql_select_db($database_roldanillo, $roldanillo);
  $Result1 = mysql_query($insertSQL, $roldanillo) or die(mysql_error());
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO apoddo (nameapoddo, dirapoddo, telapoddo, emailapoddo) VALUES (%s, %s, %s, %s)",
                       GetSQLValueString($_POST['nameapoddo'], "text"),
                       GetSQLValueString($_POST['dirapoddo'], "text"),
                       GetSQLValueString($_POST['telapoddo'], "text"),
                       GetSQLValueString($_POST['emailapoddo'], "text"));

  mysql_select_db($database_roldanillo, $roldanillo);
  $Result1 = mysql_query($insertSQL, $roldanillo) or die(mysql_error());
}
?>
preguntado por magevi (14 puntos) Feb 17, 2015 en Discusión General

2 Respuestas

0 positivos 0 negativos
Amigo quizas pecare por troll, y mucho mas, pero estas haciendo las cosas mal desde un comienzo, y el decir que estas aprendiendo no es excusa, primero ALEJATE de Dreamweaber, busca un editor serio, esos procesos automatizados de esa cosa son terribles y al final son mas piedras de tranca que palanca de impulso, estas usando mysql_query que son funciones deprecated, ya el mismo motor de php te debe lanzar una advertencia diciendo NO USES ESTO, mi recomenadacion aprende un framework y comienza desde alli... Laravel tiene ahora muchos tutoriales, codeigniter tambien...

Por otro lado, en las inserciones secundarias, no estas pasando el id de referncia, debes hacer esto, por que sino el motor no sabe a donde hacer referncia, existen muchos metodos para hacer esto, pero el mas clasico es hacer un select id where (todos lo que insertaste) y ese id lo pasas a las consultas secundarias
respondido por pax (136 puntos) Feb 18, 2015
Ejemplo Detallado Inserciones secundarias
0 positivos 0 negativos

difiero con el compañero con respecto al framework , sigue aprendiendo php y luego pasa a php orientado a objetos.

 

de nada te va a servir ir directo a un framework y no saber practicamente nada sera peor para ti.

y si lo que quieres es insertar en multiples tablas deberias hacerlo por transacciones.

 

y lo mas simple para obtener el id con que quieres hacer referencia a la otra tabla es usar alguno de estos :

https://www.w3schools.com/php/php_mysql_insert_lastid.asp

 

 

respondido por elsuper07 (30 puntos) May 16
...