Foros del Web » Programando para Internet » PHP »

Datos del formulario HTML no llegan a PHP

Estas en el tema de Datos del formulario HTML no llegan a PHP en el foro de PHP en Foros del Web. 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> ...
  #1 (permalink)  
Antiguo 10/06/2012, 14:36
 
Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 16 años
Puntos: 0
Datos del formulario HTML no llegan a 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>
    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"];


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> 
Lo que pasa es que al registrar un empleado me sale este error abajo:

Notice: Undefined variable: POST in C:\xampp\htdocs\registroempleado.php on line 46

Notice: Undefined variable: POST in C:\xampp\htdocs\registroempleado.php on line 47

Notice: Undefined variable: POST in C:\xampp\htdocs\registroempleado.php on line 48
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)



Agradecería alguien me ayude.

Saludos.
  #2 (permalink)  
Antiguo 10/06/2012, 14:40
 
Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 16 años
Puntos: 0
Respuesta: Datos del formulario HTML no llegan a PHP

Aquí va un extracto del SQL de la BBDD, nada más las tablas comprometidas:

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;
Cabe destacar que al momento de registrarlo, dejé en blanco el campo RUT Jefe, lo que lo hago a propósito pues aún no registro administradores y justamente dejé NULL el campo rut_a_fk para que puedan registrarse con valores nulos.
  #3 (permalink)  
Antiguo 10/06/2012, 16:12
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 12 años, 5 meses
Puntos: 32
Respuesta: Datos del formulario HTML no llegan a PHP

el problema es que el array de datos esta en $_POST y no en $POST, te estas olvidando el guion bajo entre el signo dolar y la P, aca te dejo un ejemplo.

Código PHP:
Ver original
  1. $fecha_contrato=$POST["fecha_contrato"];
  2. $tipo_empleado=$POST["tipo_empleado"];
  3. $rut_a_fk=$POST["rut_a_fk"];

deberia ser asi


Código PHP:
Ver original
  1. $fecha_contrato=$_POST["fecha_contrato"];
  2. $tipo_empleado=$_POST["tipo_empleado"];
  3. $rut_a_fk=$_POST["rut_a_fk"];

Fijate de chequear el resto.

Espero sirva, saludos.
__________________
http://www.latinium.com.ar/
  #4 (permalink)  
Antiguo 10/06/2012, 18:04
 
Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 16 años
Puntos: 0
Respuesta: Datos del formulario HTML no llegan a PHP

Cita:
Iniciado por elgoncho99 Ver Mensaje
el problema es que el array de datos esta en $_POST y no en $POST, te estas olvidando el guion bajo entre el signo dolar y la P, aca te dejo un ejemplo.

Código PHP:
Ver original
  1. $fecha_contrato=$POST["fecha_contrato"];
  2. $tipo_empleado=$POST["tipo_empleado"];
  3. $rut_a_fk=$POST["rut_a_fk"];

deberia ser asi


Código PHP:
Ver original
  1. $fecha_contrato=$_POST["fecha_contrato"];
  2. $tipo_empleado=$_POST["tipo_empleado"];
  3. $rut_a_fk=$_POST["rut_a_fk"];

Fijate de chequear el resto.

Espero sirva, saludos.
Gracias, ahora solo sigue apareciendo este 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)



PD: traté de modificar el script para que no mande un 0 si no escribo nada en el campo rut jefe y lo dejé así:

Código HTML:
....
$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)
...
(los "..." es porque le antecede y le sigue el script anteriormente mencionado)

PD: registré manualmente un empleado en la tabla administrador con x rut, luego lo puse para registrar un empleado desde este formulario poniendo en rut jefe el rut del empleado registrado en administrador y me sale el mismo error.

Última edición por oliverm; 10/06/2012 a las 18:11 Razón: Datos extras sabidos después de postear pregunta.

Etiquetas: formulario, html, llegan, mysql, registro, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:09.