Autor Tema: Problema al grabar datos en tablas relacion referencial CREATE TABLE Y PHP  (Leído 2789 veces)

magevi

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
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:

Código: [Seleccionar]
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

_________________________________________________________________


Código: [Seleccionar]
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());
}
?>
« Última modificación: 05 de Marzo 2015, 08:54 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:Problema al grabar datos en tablas relacion referencial
« Respuesta #1 en: 18 de Febrero 2015, 12:22 »
Hola magevi, como solemos hacer con "los nuevos", te recomiendo que leas esto https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 y que cuando vayas a pegar código uses las indicaciones que ahí tienes.

Para tratar de resolver el problema que tienes lo primero sería saber si estás trabajando en local (y en ese caso qué emulador de servidor estás usando) o en remoto. También habría que saber si puedes acceder a la base de datos con phpMyAdmin y comprobar si las tablas están creadas todas ellas y si puedes o no insertar registros manualmente a través de phpMyAdmin.

Un fragmento que resulta extraño es este:

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

Aparentemente después de escribir en la primera tabla estás usando header para redireccionar hacia otra url, y de este modo no tendría lugar la escritura en las demás tablas. ¿Por qué tienes este fragmento de código ahí? ¿No sería más lógico tenerlo después de todas las inserciones si es que quieres que se ejecuten todas?

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".