CURSO 2025/2026 -- DAW 2 -- I.E.S. LOS SAUCES
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<link rel="icon" type="image/png" href="../webroot/media/favicon/favicon-32x32.png">
<link rel="stylesheet" href="../webroot/css/estilos.css">
<title>Gonzalo Junquera Lorenzo</title>
<style>
main h2{
text-align: center;
background-color: #ebe5e5ff;
margin: 30px 10vw 0px 10vw;
padding: 5px 0;
}
main h3{
margin-top: 0;
}
main p{
text-align: center;
padding: 3px;
margin: 0 10vw;
}
.correcto{background-color: #dce9d5ff;}
.error{background-color: #e9b8b8ff;}
main pre{
margin-left: 10vw;
}
</style>
</head>
<body>
<div id="aviso">CURSO 2025/2026 -- DAW 2 -- I.E.S. LOS SAUCES</div>
<nav>
<div><a href="../indexProyectoTema4.php">Volver</a></div>
<h2> <a href="../indexProyectoTema4.php">Tema 4</a> - Ejercicio 08 PDO</h2>
<h2>Gonzalo Junquera Lorenzo</h2>
</nav>
<main>
<?php
/**
* @author: Gonzalo Junquera Lorenzo
* @since: 13/11/2025
* 8. Página web que toma datos (código y descripción) de la tabla Departamento y guarda en un fichero departamento.xml. (COPIA DE SEGURIDAD / EXPORTAR). El fichero exportado se encuentra en el directorio .../tmp/ del servidor.
* Si el alumno dispone de tiempo probar distintos formatos de importación - exportación: XML, JSON, CSV, TXT,...
* Si el alumno dispone de tiempo probar a exportar e importar a o desde un directorio (a elegir) en el equipo cliente.
* Si el alumno dispone de tiempo probar importación parcial con log de errores.
*/
// importamos el archivo con los datos de conexión
require_once '../conf/confDBPDO.php';
$numRegistros = 0;
try {
$miDB = new PDO(DSN,USERNAME,PASSWORD);
$sql = "select * from T02_Departamento";
$consulta = $miDB->prepare($sql);
$consulta->execute();
// inicializo el array vacio para que no me de error después en json_encode en caso de que no haya registros en la bbdd.
$aDepartamentos=[];
$indice = 0;
while ($registro = $consulta->fetchObject()) {
$aDepartamentos[$indice]=[
'CodDepartamento' => $registro->T02_CodDepartamento,
'DescDepartamento' => $registro->T02_DescDepartamento,
'FechaCreacionDepartamento' => $registro->T02_FechaCreacionDepartamento,
'VolumenDeNegocio' => $registro->T02_VolumenDeNegocio,
// Si la fecha de baja es NULL en la DB, la convertimos a 'NULL' para la exportación
'FechaBajaDepartamento' => $registro->T02_FechaBajaDepartamento ?? 'null'
];
$indice++;
}
// https://www.php.net/manual/es/json.constants.php
// JSON_PRETTY_PRINT sirve para que después al visualizarlo haga saltos de linea, sino se ve todo en una sola
$json = json_encode($aDepartamentos,JSON_PRETTY_PRINT);
file_put_contents('../tmp/datos.json',$json);
echo '<p class="correcto">Datos exportados correctamente a JSON</p>';
// Visualizamos el archivo JSON para ver si se ha creado bien
echo '<h2>Contenido del archivo JSON</h2>';
echo '<pre>';
highlight_file("../tmp/datos.json");
echo '</pre>';
} catch (PDOException $miExceptionPDO) {
echo '<p class="error">ERROR al exportar datos a JSON</p>';
echo 'Error: '.$miExceptionPDO->getMessage();
echo '<br>';
echo 'Código de error: '.$miExceptionPDO->getCode();
} finally {
unset($miDB);
}
?>
</main>
</body>
</html>