10/06/2012, 18:25
|
| | Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 16 años Puntos: 0 | |
Datos de formulario no llegan a BBDD por problema con clave foranea El error:
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> Extracto del SQL comprometido:
Código:
-- -----------------------------------------------------
-- 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;
Ya tenía un tema con este error, pero empezé enviando otra pregunta y antes de desviar el tema del topic, preferí empezar otro.
Saludos.
Última edición por oliverm; 10/06/2012 a las 18:26
Razón: Dejar más claro el contenido.
|