Cannot add or update a child row: a foreign key constraint fails (`omohr4`.`empleado`, CONSTRAINT `rut_a_fk` FOREIGN KEY (`rut_a_fk`) REFERENCES `administrador` (`rut_a`) ON DELETE NO ACTION ON UPDATE NO ACTION)
El HTML/PHP:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Registro Empleados</title> </head> <body> <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> <p><b>Formulario de registro de Empleado</b> <br><br> Primer nombre: <input type="text" name="nombre"><br> Primer apellido: <input type="text" name="apellido"><br> RUT: <input type="text" name="rut_e"><br> Calle y número: <input type="text" name="calle_nro"><br> Comuna: <input type="text" name="comuna"><br> Región: <input type="text" name="region"><br> Fecha contrato: <input type="text" name="fecha_contrato"><br> Tipo Empleado: <select name="tipo_empleado"><option>a</option><option>v</option><option>j</option> </select><br> Rut jefe: <input type="text" name="rut_a_fk"> </p> <p> <input type="submit" value="Registrar" /> <br> </p> </form> <?php if(isset($_POST['nombre'])){ $host="localhost"; $username="root"; $password=""; $conexion=mysql_connect($host,$username,$password) or die(mysql_error()); $db = @mysql_select_db("omohr4", $conexion) or die(mysql_error()); $nombre=$_POST["nombre"]; $apellido=$_POST["apellido"]; $rut_e=$_POST["rut_e"]; $calle_nro=$_POST["calle_nro"]; $comuna=$_POST["comuna"]; $region=$_POST["region"]; $fecha_contrato=$_POST["fecha_contrato"]; $tipo_empleado=$_POST["tipo_empleado"]; $rut_a_fk=$_POST["rut_a_fk"]; if ($rut_a_fk='') {mysql_query("INSERT INTO empleado (`rut_e`, `nombre`, `apellido`, `calle_nro`, `comuna`, `region`,`fecha_contrato`,`tipo_empleado`,`rut_a_fk`) VALUES ('$rut_e','$nombre','$apellido','$calle_nro','$comuna','$region','$fecha_contrato','$tipo_empleado', NULL)") or die(mysql_error()); } mysql_query("INSERT INTO empleado (`rut_e`, `nombre`, `apellido`, `calle_nro`, `comuna`, `region`,`fecha_contrato`,`tipo_empleado`,`rut_a_fk`) VALUES ('$rut_e','$nombre','$apellido','$calle_nro','$comuna','$region','$fecha_contrato','$tipo_empleado','$rut_a_fk')") or die(mysql_error()); if ($tipo_empleado = a) { $titulo="DEFECTO"; mysql_query("INSERT INTO administrador (`rut_a`, `titulo`) VALUES ('$rut_e,'$titulo')") or die(mysql_error()); } if ($tipo_empleado=v) { mysql_query("INSERT INTO vendedor (rut_v) VALUES ('rut_e')") or die(mysql_error()); } if ($tipo_empleado=j) { $cargo_mantencion="DEFECTO"; mysql_query("INSERT INTO junior (rut_j, cargo_mantencion) VALUES ('$rut_e, '$cargo_mantencion')") or die(mysql_error()); } } ?> </body> </html>
Código:
Ya tenía un tema con este error, pero empezé enviando otra pregunta y antes de desviar el tema del topic, preferí empezar otro.-- ----------------------------------------------------- -- Table `omohr4`.`administrador` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `omohr4`.`administrador` ( `rut_a` INT(8) NOT NULL , `titulo` VARCHAR(35) NOT NULL , PRIMARY KEY (`rut_a`) , INDEX `rut_a` (`rut_a` ASC) , CONSTRAINT `rut_a` FOREIGN KEY (`rut_a` ) REFERENCES `omohr4`.`empleado` (`rut_e` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `omohr4`.`empleado` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `omohr4`.`empleado` ( `rut_e` INT(8) NOT NULL , `nombre` VARCHAR(35) NOT NULL , `apellido` VARCHAR(35) NOT NULL , `calle_nro` VARCHAR(35) NOT NULL , `comuna` VARCHAR(35) NOT NULL , `region` VARCHAR(35) NOT NULL , `fecha_contrato` DATE NOT NULL , `tipo_empleado` ENUM('a','v','j') NOT NULL , `rut_a_fk` INT(8) NULL , PRIMARY KEY (`rut_e`) , INDEX `rut_a_fk` (`rut_a_fk` ASC) , CONSTRAINT `rut_a_fk` FOREIGN KEY (`rut_a_fk` ) REFERENCES `omohr4`.`administrador` (`rut_a` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `omohr4`.`vendedor` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `omohr4`.`vendedor` ( `rut_v` INT(8) NOT NULL , PRIMARY KEY (`rut_v`) , INDEX `rut_v` (`rut_v` ASC) , CONSTRAINT `rut_v` FOREIGN KEY (`rut_v` ) REFERENCES `omohr4`.`empleado` (`rut_e` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `omohr4`.`entrega` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `omohr4`.`entrega` ( `id_entrega` INT NOT NULL AUTO_INCREMENT , `rut_c_fk2` INT(9) NOT NULL , `rut_v_fk` INT(8) NOT NULL , `fecha` DATE NOT NULL , PRIMARY KEY (`id_entrega`) , INDEX `rut_c_fk2` (`rut_c_fk2` ASC) , CONSTRAINT `rut_c_fk2` FOREIGN KEY (`rut_c_fk2` ) REFERENCES `omohr4`.`cliente` (`rut_c` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `rut_v_fk` FOREIGN KEY (`rut_v_fk` ) REFERENCES `omohr4`.`vendedor` (`rut_v` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `omohr4`.`junior` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `omohr4`.`junior` ( `rut_j` INT(8) NOT NULL , `cargo_mantencion` VARCHAR(35) NOT NULL , PRIMARY KEY (`rut_j`) , INDEX `rut_j` (`rut_j` ASC) , CONSTRAINT `rut_j` FOREIGN KEY (`rut_j` ) REFERENCES `omohr4`.`empleado` (`rut_e` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;
Saludos.