estoy tratando de crear una funcion que cada vez que es llamada "actualiza los datos que tiene la tabla "obra", esta tabla debe almacenar la suma de los datos que estan en "detalle_obra", el atributo "cod_obra" de la tabla detalle_obra es el mismo dato que el atributo "codigo" de tabla obra (clave primaria) el cual entra a la funcion con el nombre "$obra" y se utiliza para saber en que obra va la respectiva suma. El problema es que la funcion no hace absolutamente nada, no logro hacer que se actualizen estos datos. las tablas estan compuestas de la siguiente forma:
Código PHP:
CREATE TABLE IF NOT EXISTS `mydb`.`Detalle_Obra` (
`cod_obra` INT NOT NULL,
`fecha` DATE NOT NULL,
`especificacion` VARCHAR(300) NOT NULL,
`egresos` INT NULL,
`ingresos` INT NULL,
`recepcion` INT NULL,
`combustible_recepcion` INT NULL,
`combustible_emision` INT NULL,
INDEX `cod_obra_idx` (`cod_obra` ASC),
CONSTRAINT `cod_obra`
FOREIGN KEY (`cod_obra`)
REFERENCES `mydb`.`Obra` (`codigo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Obra` (
`codigo` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(45) NOT NULL,
`cod_cliente` INT NOT NULL,
`fecha_inicio` DATE NOT NULL,
`fecha_final` DATE NOT NULL,
`egresos` INT NULL,
`ingresos` INT NULL,
`recepcion` INT NULL,
`combustibles_recepcion` INT NULL,
`combustibles_emision` INT NULL,
`saldo_general` INT NULL,
`iva_facturado` INT NULL,
`iva_compras` INT NULL,
`dif_iva` INT NULL,
`iva_bencina` INT NULL,
`dif_iva2` INT NULL,
PRIMARY KEY (`codigo`),
INDEX `cod_cliente_idx` (`cod_cliente` ASC),
CONSTRAINT `cod_cliente`
FOREIGN KEY (`cod_cliente`)
REFERENCES `mydb`.`Cliente` (`codigo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
el codigo es:
Código PHP:
function actualizarObras($obra){
$con=mysqli_connect("localhost","root","","mydb");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$query_select = "SELECT * FROM detalle_obra WHERE cod_obra = '$obra'";
$query_execute = $con->query($query_select);
while($query_result = $query_execute->fetch_array()) {
$egre = $query_result['egresos'];
$ingre = $query_result['ingresos'];
$recepci = $query_result['recepcion'];
$combusre = $query_result['combustible_recepcion'];
$combuem = $query_result['combustible_emision'];
$conslt = "UPDATE obra SET obra.egresos = obra.egresos + '$egre' WHERE obra.codigo = '$obra'";
mysqli_query($con, $conslt);
$conslt2 = "UPDATE obra SET obra.ingresos = obra.ingresos + '$ingre' WHERE obra.codigo = '$obra'";
mysqli_query($con, $conslt2);
$conslt3 = "UPDATE obra SET obra.recepcion = obra.recepcion + '$recepci' WHERE obra.codigo = '$obra'";
mysqli_query($con, $conslt3);
$conslt4 = "UPDATE obra SET obra.combustible_recepcion = obra.combustible_recepcion + '$combusre' WHERE obra.codigo = '$obra'";
mysqli_query($con, $conslt4);
$conslt5 = "UPDATE obra SET obra.combustible_emision = obra.combustible_emision + '$combuem' WHERE obra.codigo = '$obra'";
mysqli_query($con, $conslt5);
}
mysqli_close($con);
}
PD: El problema radica dentro de la funcion ya que es la unica parte de la aplicacion que no funciona como deberia.