Cuento con un formulario donde capturo 3 datos (2 nombre y una cantidad) al momento de intentar ingresar estos datos me tira un error 1452 de Mysql. paso a agregar parte del codigo para que se entienda mejor a lo que me refiero
Código:
<form id="frmINS" action="ProcInsumoEXT.php" method="POST"> <fieldset id="frm"> <legend>Ingreso de Datos</legend> <table class="tabla"> <tr> <td class="ImpStyle">Tipo de insumo:</td> <td> <?php /* * Código para mostrar datos dinámicamente en un combobox. */ include 'conexion.php'; $tipo_ins = 'SELECT * FROM tipo_insumo'; $resultado = $conexion->query($tipo_ins); ?> <select id="TIPINS" name="TIPINS" class="entrada" > <?php while ( $fila = $resultado->fetch_array() ) { ?> <option value=" <?php echo $fila['nomb_tipo'] ?> " > <?php echo $fila['nomb_tipo']; ?> </option> <?php } ?> </select> <?php ?> </td> </tr> <tr> <td class="ImpStyle">Almacen de destino:</td> <td> <?php /* * Código para mostrar datos dinámicamente en un combobox. */ include 'conexion.php'; $num_almacen = 'SELECT * FROM almacen'; $resultado2 = $conexion->query($num_almacen); ?> <select id="ALMINS" name="ALMINS" class="entrada" > <?php while ( $fila1 = $resultado2->fetch_array() ) { ?> <option value=" <?php echo $fila1['nomb_almacen'] ?> " > <?php echo $fila1['nomb_almacen']; ?> </option> <?php } ?> </select> <?php ?> </td> </tr>
Código:
<?php // ESTABLECER CONEXION include "conexion.php"; // TOMA DATOS DEL FORMULARIO $tipo = $_POST["TIPINS"] ; $almacen = $_POST["ALMINS"] ; $cantidad = $_POST["CANT"] ; mysqli_select_db($database); $sql= "INSERT INTO insumo (nomb_insumo) VALUES ('$tipo')"; mysqli_query($conexion,$sql); $var = mysqli_insert_id($conexion); while ($cantidad <>0) { // CREAR SENTENCIA SQL $sql2= "INSERT INTO ins_al (id_insumo,nomb_almacen) VALUES ('$var','$almacen')"; // EJECUTAR SENTENCIA SQL mysqli_query($conexion,$sql2); //Commit transaction mysqli_commit($conexion); $var ++; $cantidad --; } // CLOSED CONNECTION mysqli_close($conexion); // VOLVER AL FORMULARIO header("Location: Altas.php"); ?>
ins_al es la relación de las tablas insumo y almacén, y contiene las fk_id_insumo relacionando id_insumo de la tabla insumo(donde es PK) con id_insumo de la tabla ins_al, lo mismo con nomb_almacen de almacén (donde es PK) con nomb_almacen de ins_al
probé haciendo una tabla ins_alPrueba para sacarme la duda si el sistema estaba capturando y procesando bien los datos y si ingresa sin problemas(en esta no use FK haciendo referencias a las otras 2 tablas), corrí la consulta en Heidi y me salio ese error en Mysql (1452) se que debe de haber algo que evidentemente tengo mal, pero hace rato vengo dando vuelta y no doy pie en que puede ser o que debo de buscar
dejo el codigo de las 4 tablas que estan implicadas por si se necesita
Código:
DROP TABLE IF EXISTS `proyecto`.`tipo_insumo`; CREATE TABLE `proyecto`.`tipo_insumo` ( `id_tipo` int(10) unsigned NOT NULL AUTO_INCREMENT, `nomb_tipo` varchar(30) NOT NULL DEFAULT '', `desc_tipo` varchar(60) NOT NULL DEFAULT '', PRIMARY KEY (`id_tipo`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
Código:
DROP TABLE IF EXISTS `proyecto`.`ins_al`; CREATE TABLE `proyecto`.`ins_al` ( `id_entrada` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_insumo` int(10) unsigned NOT NULL DEFAULT '0', `nomb_almacen` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`id_entrada`), KEY `FK1_id_insumo` (`id_insumo`), KEY `FK2_nomb_almacen` (`nomb_almacen`), CONSTRAINT `FK1_id_insumo` FOREIGN KEY (`id_insumo`) REFERENCES `insumo` (`id_insumo`), CONSTRAINT `FK2_nomb_almacen` FOREIGN KEY (`nomb_almacen`) REFERENCES `almacen` (`nomb_almacen`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
Código:
DROP TABLE IF EXISTS `proyecto`.`almacen`; CREATE TABLE `proyecto`.`almacen` ( `nomb_almacen` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`nomb_almacen`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Código:
si alguien ve algo o se le ocurre le agradecería una enormidad, hace tiempo deje la programación y ahora vengo retomando DROP TABLE IF EXISTS `proyecto`.`insumo`; CREATE TABLE `proyecto`.`insumo` ( `id_insumo` int(10) unsigned NOT NULL AUTO_INCREMENT, `nomb_insumo` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`id_insumo`) ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1;
un saludo!