Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/06/2016, 23:54
HerBorreani
 
Fecha de Ingreso: junio-2016
Mensajes: 3
Antigüedad: 7 años, 10 meses
Puntos: 0
Problema al insertar datos a tabla con FK

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!