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>
@font-face {
font-family: LibreCaslon;
src: url(../webroot/fonts/Libre_Caslon_Text/LibreCaslonText-Italic.ttf);
}
.contenedor {
max-width: 900px;
margin: 0 auto;
padding: 20px;
background-color: #fff;
border: 1px solid #ccc;
}
.contenedor *{
font-family: LibreCaslon;
letter-spacing: 1px;
}
/* Títulos */
.contenedor h1 {
color: #12762c;
text-align: center;
font-size: 1.5em;
margin-bottom: 5px;
}
.contenedor h2 {
color: #12762c;
text-align: center;
font-size: 1.5em;
margin-bottom: 20px;
}
/* Logo */
.logo {
text-align: center;
margin-bottom: 20px;
}
.logo img {
width: 80px;
height: auto;
}
/* Campos del formulario */
.formulario {
padding: 10px;
}
.campo {
margin-bottom: 20px;
}
.campo label {
font-weight: bold;
color: #333;
display: inline-block;
margin-bottom: 5px;
}
.obligatorio {
color: red;
}
/* Estilo general para cuadros */
input[type="text"],
input[type="date"],
input[type="number"],
select,
textarea{
border: 1px solid #000;
padding: 5px;
background-color: #FFFFE0;
}
/* Estilos específicos para campo nombre_apellidos */
#nombre_apellidos {
width: 50%;
max-width: 500px;
}
/* Estilos para campo de fecha */
input[type="date"] {
width: 150px;
}
/* Estilos para los Radio Buttons */
.opciones-radio {
display: grid;
grid-template-columns: auto 30px; /* Columna para el texto y columna pequeña para el radio */
gap: 5px;
max-width: 150px; /* Para agruparlos */
align-items: center;
}
.opciones-radio label {
font-weight: normal;
}
.opciones-radio input[type="radio"] {
width: 20px;
height: 20px;
border: 2px solid black;
border-radius: 15px;
cursor: pointer;
}
/* Estilos para campo de puntuación */
#puntuacion_curso {
width: 50px;
text-align: center;
}
/* Estilo para el campo desplegable */
#vacaciones {
width: 350px;
}
/* Estilo para el área de texto */
#estado_animo {
width: 100%;
resize: vertical; /* Permite redimensionar solo verticalmente */
}
/* Botón de ENVIAR */
.boton-contenedor {
text-align: center;
margin-top: 30px;
}
.enviar {
padding: 4px 30px;
background-color: #ccc; /* Fondo gris */
border: 1px solid #666; /* Borde gris más oscuro */
color: #195b13ff;
font-size: 1em;
cursor: pointer;
}
/* Respuesta */
.respuesta-contenedor{
padding-left: 100px;
word-spacing: 5px;
}
.respuesta-contenedor p{
margin-bottom: 10px;
}
.respuesta{
color: #5983b0;
}
</style>
</head>
<body>
<div id="aviso">CURSO 2025/2026 -- DAW 2 -- I.E.S. LOS SAUCES</div>
<nav>
<div><a href="../indexProyectoTema3.php">Volver</a></div>
<h2> <a href="../indexProyectoTema3.php">Tema 3</a> - Ejercicio 27</h2>
<h2>Gonzalo Junquera Lorenzo</h2>
</nav>
<main>
<?php
/**
* @author: Gonzalo Junquera Lorenzo
* @since: 26/10/2025
* 27.Ejercicio extra para probar la plantilla del formulario que ha ganado el concurso
*/
require_once "../core/231018libreriaValidacion.php"; // importamos nuestra libreria
$entradaOK = true; //Variable que nos indica que todo va bien
$aErrores = [ //Array donde recogemos los mensajes de error
'nombre_apellidos' => '',
'fecha_nacimiento' => '',
'sentimiento'=> '',
'puntuacion_curso'=> '',
'vacaciones'=> '',
'estado_animo'=> ''
];
$aRespuestas=[ //Array donde recogeremos la respuestas correctas (si $entradaOK)
'nombre_apellidos' => '',
'fecha_nacimiento' => '',
'sentimiento'=> '',
'puntuacion_curso'=> '',
'vacaciones'=> '',
'estado_animo'=> ''
];
//Para cada campo del formulario: Validar entrada y actuar en consecuencia
if (isset($_REQUEST["enviar"])) {//Código que se ejecuta cuando se envía el formulario
// Validamos los datos del formulario
$aErrores['nombre_apellidos']= validacionFormularios::comprobarAlfabetico($_REQUEST['nombre_apellidos'],100,0,1,);
$aErrores['fecha_nacimiento']= validacionFormularios::validarFecha($_REQUEST['fecha_nacimiento'],'01/01/2200','01/01/1900',1);
// $aErrores['sentimiento'] = $_REQUEST['sentimiento'];
$aErrores['puntuacion_curso']= validacionFormularios::comprobarEntero($_REQUEST['puntuacion_curso'],PHP_INT_MAX,-PHP_INT_MAX,1);
$aErrores['vacaciones'] = validacionFormularios::comprobarNoVacio($_REQUEST['vacaciones']);
$aErrores['estado_animo'] = validacionFormularios::comprobarNoVacio($_REQUEST['estado_animo']);
foreach($aErrores as $campo => $valor){
if(!empty($valor)){ // Comprobar si el valor es válido
$entradaOK = false;
}
}
} else {//Código que se ejecuta antes de rellenar el formulario
$entradaOK = false;
}
//Tratamiento del formulario
if($entradaOK){ //Cargar la variable $aRespuestas y tratamiento de datos OK
// Recuperar los valores del formulario
$aRespuestas['nombre_apellidos'] = $_REQUEST['nombre_apellidos'];
$aRespuestas['fecha_nacimiento'] = $_REQUEST['fecha_nacimiento'];
$aRespuestas['sentimiento'] = $_REQUEST['sentimiento'];
$aRespuestas['puntuacion_curso'] = $_REQUEST['puntuacion_curso'];
$aRespuestas['vacaciones'] = $_REQUEST['vacaciones'];
$aRespuestas['estado_animo'] = $_REQUEST['estado_animo'];
// Calculo de la edad restando a la fecha actual la fecha de nacimiento
$ofechaActual = new DateTime();
$oFechaNacimento = new DateTime($aRespuestas['fecha_nacimiento']);
$oDiferenciaFechas = $ofechaActual->diff($oFechaNacimento);
// Repuesta con texto largo
echo '<div class="contenedor">';
echo '<h2>RESULTADOS DE LA ENCUESTA - INFORME DE SATISFACCIÓN PERSONAL</h2>';
echo '<div class="logo"><img src="../webroot/media/images/resultado.png" alt="logo"></div>';
echo '<div class="respuesta-contenedor">';
echo "<p>Hoy <span class='respuesta'>".$ofechaActual->format("l, d F Y")."</span> a las <span class='respuesta'>".$ofechaActual->format("H:i")."</span> .</p>";
echo "<p>D. <span class='respuesta'>".$aRespuestas['nombre_apellidos']."</span> nacido hace <span class='respuesta'>".$oDiferenciaFechas->y."</span> años se siente <span class='respuesta'>".$aRespuestas['sentimiento']."</span> .</p>";
echo "<p>Valora su curso actual con <span class='respuesta'>".$aRespuestas['puntuacion_curso']."</span> sobre 10.</p>";
echo "<p>Estas navidades las dedicará a <span class='respuesta'>".$aRespuestas['vacaciones']."</span> .</p>";
echo "<p>Y, además, opina que:</p>";
echo "<p><pre><span class='respuesta'>".$aRespuestas['estado_animo']."</span></pre> </p>";
echo '</div>';
echo '</div>';
} else { //Mostrar el formulario hasta que lo rellenemos correctamente
//Mostrar formulario
//Mostrar los datos tecleados correctamente en intentos anteriores
//Mostrar mensajes de error (si los hay y el formulario no se muestra por primera vez)
?>
<div class="contenedor">
<h1>ENCUESTA INDIVIDUAL DE VALORACIÓN - EJERCICIO 27</h1>
<h2>UTILIZANDO PLANTILLA DE DESARROLLO DE FORMULARIOS COMO CHURROS</h2>
<div class="logo">
<img src="../webroot/media/images/encuesta.png" alt="logo">
</div>
<form action="#" method="POST" class="formulario">
<div class="campo">
<label for="nombre_apellidos">Nombre y apellidos del alumno: <span class="obligatorio">(*<?php echo $aErrores['nombre_apellidos']??'' ?>)</span></label>
<input type="text" id="nombre_apellidos" name="nombre_apellidos" value="<?php echo $_REQUEST['nombre_apellidos']??'' ?>">
</div>
<div class="campo">
<label for="fecha_nacimiento">Fecha de nacimiento: <span class="obligatorio">(*<?php echo $aErrores['fecha_nacimiento']??'' ?>)</span></label>
<input type="date" id="fecha_nacimiento" name="fecha_nacimiento" value="<?php echo $_REQUEST['fecha_nacimiento']??'' ?>">
</div>
<div class="campo">
<label>¿Cómo te sientes hoy? <span class="obligatorio">(* y una única selección permitida)</span> </label>
<div class="opciones-radio">
<label>MUY MAL</label><input type="radio" name="sentimiento" value="MUY MAL" <?php echo $_REQUEST['sentimiento']=="MUY MAL"?'checked':'unchecked' ?>>
<label>MAL</label><input type="radio" name="sentimiento" value="MAL" <?php echo $_REQUEST['sentimiento']=="MAL"?'checked':'' ?>>
<label>REGULAR</label><input type="radio" name="sentimiento" value="REGULAR" <?php echo $_REQUEST['sentimiento']=="REGULAR"?'checked':'' ?>>
<label>BIEN</label><input type="radio" name="sentimiento" value="BIEN" <?php echo $_REQUEST['sentimiento']=="BIEN"?'checked':'' ?>>
<label>MUY BIEN</label><input type="radio" name="sentimiento" value="MUY BIEN" <?php echo $_REQUEST['sentimiento']=="MUY BIEN"?'checked':'' ?>>
</div>
</div>
<div class="campo">
<label for="puntuacion_curso">¿Cómo va el curso? [0-10]: <span class="obligatorio">(* y entero)<?php echo $aErrores['puntuacion_curso']??'' ?></span></label>
<input type="number" id="puntuacion_curso" name="puntuacion_curso" min="0" max="10" value="<?php echo $_REQUEST['puntuacion_curso']??'' ?>">
</div>
<div class="campo">
<label for="vacaciones">¿Cómo se presentan las vacaciones de navidad? <span class="obligatorio">(* Cuadro de lista con los siguientes valores posibles: Ni idea, Con la familia, De fiesta, Trabajando, Estudiando DWES)<?php echo $aErrores['vacaciones']??'' ?></span></label>
<select id="vacaciones" name="vacaciones">
<option value="" selected></option>
<option value="Ni idea" <?php echo $_REQUEST['vacaciones']=="Ni idea"?'selected':'' ?>>Ni idea</option>
<option value="Con la familia" <?php echo $_REQUEST['vacaciones']=="Con la familia"?'selected':'' ?>>Con la familia</option>
<option value="De fiesta" <?php echo $_REQUEST['vacaciones']=="De fiesta"?'selected':'' ?>>De fiesta</option>
<option value="Trabajando" <?php echo $_REQUEST['vacaciones']=="Trabajando"?'selected':'' ?>>Trabajando</option>
<option value="Estudiando DWES" <?php echo $_REQUEST['vacaciones']=="Estudiando DWES"?'selected':'' ?>>Estudiando DWES</option>
</select>
</div>
<div class="campo">
<label for="estado_animo">Describe brevemente tu estado de ánimo: <span class="obligatorio">(* y área de texto para varias líneas)<?php echo $aErrores['estado_animo']??'' ?></span></label>
<textarea id="estado_animo" name="estado_animo" rows="3"><?php echo $_REQUEST['estado_animo']??'' ?></textarea>
</div>
<div class="boton-contenedor">
<button type="submit" class="enviar" name="enviar">ENVIAR</button>
</div>
</form>
</div>
<?php
}
?>
</main>
</body>
</html>