<!DOCTYPE html>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/Scripting/EmptyPHPWebPage.php to edit this template
-->
<html>
<head>
<meta charset="UTF-8">
<title>Ejercicio 5 - Alejandro De la Huerga</title>
<style>
*{
box-sizing: border-box;
margin: 0;
}
header{
width: 100%;
height: 140px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: lightblue;
}
main{
height: 72vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 1.2rem;
}
table{
border: 1px solid black;
}
tr{
border: 1px solid black;
}
th{
background: lightblue;
padding: 4px;
}
td{
border: 1px solid black;
padding: 4px;
}
footer{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 13vh;
gap: 30px;
background: lightblue;
}
footer img{
width: 40px;
height: auto;
}
</style>
</head>
<body>
<header>
<h1>TEMA 4 : TÉCNICAS DE ACCESO PHP</h1>
<h2>EJERCICIO 5</h2>
</header>
<main>
<?php
/**
* @author Alejandro De la Huerga Fernández
* @version 1.0
* @date 2025-11-12
*
*
* 5. Pagina web que añade tres registros a nuestra tabla Departamento utilizando tres instrucciones
insert y una transacción, de tal forma que se añadan los tres registros o no se añada ninguno.
*/
$numRegistros = 0; // Variable para contar el numero de registros que devuelve la consulta.
//enlace a los datos de conexión
require_once '../config/confDBPDO.php';
//Array en el cual estan almacenados los departamentos a registrar (Array que almacena array con los datos de inserción en cada campo).
$aDepartamentos = [
[
"CodDepartamentoInsertar" => "TES", //codigo de departamento de formacion
"DescDepartamentoInsertar" => "Departamento de Transporte", //descripcion del departamento de Transporte
"VolumenDeNegocioInsertar" => "123523.32" //volumen de negocio del departamento de Transporte
],
[
"CodDepartamentoInsertar" => "ROB", //codigo de departamento de Robotica
"DescDepartamentoInsertar" => "Departamento de Robotica", //descripcion del departamento Robotica
"VolumenDeNegocioInsertar" => "15826" //volumen de negocio del departamento Robotica
],
[
"CodDepartamentoInsertar" => "RHH", //codigo de departamento de Recursos Humanos
"DescDepartamentoInsertar" => "Departamento de Recursos Humanos", //descripcion del departamento de Recursos Humanos
"VolumenDeNegocioInsertar" => "125" //volumen de negocio del departamento PPP
]
];
try {
//hacemos la conexion
$miDB = new PDO(DNS, USUARIODB, PSWD);
//desactivamos el modo autocommit
$miDB->beginTransaction();
// Consulta preparada
$query2=<<<query
INSERT INTO T02_Departamento (T02_CodDepartamento,T02_DescDepartamento,T02_FechaCreacionDepartamento,
T02_VolumenDeNegocio) VALUES (:CodDepartamentoInsertar,:DescDepartamentoInsertar,now(),:VolumenDeNegocioInsertar);
query;
foreach ($aDepartamentos as $registro){
$aParametrosConsulta=[
":CodDepartamentoInsertar"=>$registro["CodDepartamentoInsertar"],
":DescDepartamentoInsertar"=>$registro["DescDepartamentoInsertar"],
":VolumenDeNegocioInsertar"=>$registro["VolumenDeNegocioInsertar"]
];
// Preparación de la inserción.
$insert=$miDB->prepare($query2);
// Insertamos los datos introducidos en el array.
$insert->execute($aParametrosConsulta);
//$miDB->exec(($sql));
}
//hacemos el commit
$miDB->commit();
//si todo ha ido bien mostramos todos los registros
$resultadoDepartamentos = $miDB->query("select * from T02_Departamento");
print '<table>';
print '<tr><th>Codigo Departamento</th><th>Descripcion Departamento</th><th>Fecha Alta</th><th>Volumen Negocio</th><th>Fecha Baja</th></tr>';
$mostrarDepartamentos = $resultadoDepartamentos->fetchObject();
while ($mostrarDepartamentos != null) {
while ($mostrarDepartamentos != null) {
print"<tr>";
echo "<td>$mostrarDepartamentos->T02_CodDepartamento</td>";
echo "<td>$mostrarDepartamentos->T02_DescDepartamento</td>";
echo "<td>$mostrarDepartamentos->T02_FechaCreacionDepartamento</td>";
echo "<td>$mostrarDepartamentos->T02_VolumenDeNegocio</td>";
echo "<td>$mostrarDepartamentos->T02_FechaBajaDepartamento</td>";
print"</tr>";
$mostrarDepartamentos = $resultadoDepartamentos->fetchObject();
}
}
print '</table>';
} catch (PDOException $miExcepcionPDO) {
//revierte los cambios
$miDB->rollBack();
echo "<br>Transacción fallida. Cambios deshechos (ROLLBACK).";
//mostramos el mensaje de error
echo $miExcepcionPDO->getMessage();
} finally {
//nos desconectamos de la base de datos
unset($miDB);
}
?>
</main>
</body>
<footer>
<a href="../indexProyectoTema3.php">Alejandro De la Huerga Fernández</a>
<a href="https://github.com/alejandrohuerga/AHFDWESProyectoTema4.git">
<img src="../doc/images/github-logo.png">
</a>
</footer>
</html>