Buenas! les comento un poco el error que vengo teniendo.
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:
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;
si alguien ve algo o se le ocurre le agradecería una enormidad, hace tiempo deje la programación y ahora vengo retomando
un saludo!