Encuesta :D :) :l ): D:

This commit is contained in:
jose.gonzalez 2025-05-11 13:57:21 -06:00
parent abd6f4a28c
commit b3e1c5554a
7 changed files with 125 additions and 51 deletions

View File

@ -13,16 +13,8 @@ $resultado = $conexion->query($query);
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Centro de Certificación LANIA</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome para íconos -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" rel="stylesheet">
<!-- Custom CSS opcional (puedes agregar tu estilo o el de SB Admin 2) -->
<style>
body {
display: flex;
@ -30,16 +22,24 @@ $resultado = $conexion->query($query);
.sidebar {
min-width: 250px;
height: 100vh;
background:rgb(229, 114, 31);
background: rgb(229, 114, 31);
color: white;
}
.sidebar a {
color: white;
text-decoration: none;
}
.survey img {
cursor: pointer;
transition: transform .1s;
}
.survey img:checked + label img,
.survey input[type="radio"]:checked + label img {
transform: scale(1.2);
}
</style>
</head>
<body>
<body class="bg-light">
<!-- Sidebar -->
<nav class="sidebar p-3">
@ -60,6 +60,7 @@ $resultado = $conexion->query($query);
<div class="card shadow p-4">
<form id="formSalida" method="POST">
<div class="row g-3">
<!-- Nombre del Usuario -->
<div class="col-md-6">
<label for="nombre" class="form-label">Nombre del Usuario</label>
<select class="form-select" id="nombre" name="id_usuario" required>
@ -69,6 +70,7 @@ $resultado = $conexion->query($query);
<?php endwhile; ?>
</select>
</div>
<!-- Hora de salida -->
<div class="col-md-6">
<label for="hora" class="form-label">Hora de salida</label>
<select class="form-select" id="hora" name="hora_salida" required>
@ -78,60 +80,109 @@ $resultado = $conexion->query($query);
</select>
</div>
</div>
<!-- Encuesta de satisfacción (opcional) -->
<div class="mt-4 survey">
<h5>Encuesta de satisfacción</h5>
<?php
$preguntas = [
'atencion_personal' => '¿Cómo calificaría la atención del personal?',
'equipo_funcionando' => '¿Funcionó correctamente el equipo?',
'ambiente_aula' => '¿Cómo valoraría el ambiente del aula?',
'calidad_internet' => '¿Qué tan satisfactoria fue la conexión a internet?',
'instrucciones_claras' => '¿Recibió instrucciones claras?',
'respuesta_personal' => '¿El personal respondió con rapidez?',
'recomendacion_lania' => '¿Recomendaría LANIA a otros?'
];
foreach ($preguntas as $campo => $texto): ?>
<div class="mb-3">
<label class="form-label"><?= $texto ?></label>
<div>
<?php for ($i = 1; $i <= 5; $i++): ?>
<input
type="radio"
name="<?= $campo ?>"
id="<?= $campo . '_' . $i ?>"
value="<?= $i ?>"
style="display: none;"
>
<label for="<?= $campo . '_' . $i ?>">
<img src="assets/face_<?= $i ?>.png" alt="<?= $i ?>" width="30">
</label>
<?php endfor; ?>
</div>
</div>
<?php endforeach; ?>
</div>
<!-- fin de encuesta -->
<!-- Consentimiento -->
<input type="hidden" name="consentimiento" value="no">
<div class="form-check mb-4">
<input
class="form-check-input"
type="checkbox"
id="consentimiento"
name="consentimiento"
value="si"
checked
>
<label class="form-check-label" for="consentimiento">
Doy mi consentimiento para recibir publicidad
</label>
</div>
<!-- Botón enviar -->
<div class="mt-4 text-end">
<button type="submit" class="btn btn-primary">Enviar registro</button>
</div>
<input type="hidden" name="consentimiento" value="no">
<input type="checkbox" id="consentimiento" name="consentimiento" value="si" checked>
<label for="consentimiento">Doy mi consentimiento para recibir publicidad</label><br>
</form>
</div>
</div>
<!-- Modal de agradecimiento -->
<div class="modal fade" id="modalGracias" tabindex="-1" aria-labelledby="modalGraciasLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header bg-success text-white">
<h5 class="modal-title" id="modalGraciasLabel">¡Salida registrada!</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
</div>
<div class="modal-body text-center">
Gracias por tu asistencia.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" data-bs-dismiss="modal">Aceptar</button>
<div class="modal fade" id="modalGracias" tabindex="-1" aria-labelledby="modalGraciasLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header bg-success text-white">
<h5 class="modal-title" id="modalGraciasLabel">¡Salida registrada!</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
</div>
<div class="modal-body text-center">
Gracias por tu asistencia.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" data-bs-dismiss="modal">Aceptar</button>
</div>
</div>
</div>
</div>
</div>
<script>
document.getElementById("formSalida").addEventListener("submit", function(e) {
e.preventDefault(); // evita recargar la página
<script>
document.getElementById("formSalida").addEventListener("submit", function(e) {
e.preventDefault();
const form = e.target;
const formData = new FormData(form);
const form = e.target;
const formData = new FormData(form);
fetch("model/logout.php", {
method: "POST",
body: formData
})
.then(response => response.text())
.then(data => {
// Mostrar el modal de Bootstrap
const modalGracias = new bootstrap.Modal(document.getElementById('modalGracias'));
modalGracias.show();
form.reset(); // limpia el formulario
})
.catch(error => {
console.error("Error al enviar:", error);
alert("Ocurrió un error al registrar la salida.");
fetch("model/logout.php", {
method: "POST",
body: formData
})
.then(response => response.text())
.then(data => {
const modalGracias = new bootstrap.Modal(document.getElementById('modalGracias'));
modalGracias.show();
form.reset();
})
.catch(error => {
console.error("Error al enviar:", error);
alert("Ocurrió un error al registrar la salida.");
});
});
});
</script>
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
</html>

BIN
assets/face_1.png Normal file

Binary file not shown.

After

(image error) Size: 8.4 KiB

BIN
assets/face_2.png Normal file

Binary file not shown.

After

(image error) Size: 8.3 KiB

BIN
assets/face_3.png Normal file

Binary file not shown.

After

(image error) Size: 7.8 KiB

BIN
assets/face_4.png Normal file

Binary file not shown.

After

(image error) Size: 8.1 KiB

BIN
assets/face_5.png Normal file

Binary file not shown.

After

(image error) Size: 7.5 KiB

View File

@ -5,8 +5,31 @@ $id_usuario = $_POST['id_usuario'];
$hora_salida = $_POST['hora_salida'];
$consentimiento = $_POST['consentimiento'] ?? 'no';
$stmt = $conexion->prepare("INSERT INTO salida (id_usuario, hora_salida, consentimiento) VALUES (?, ?, ?)");
$stmt->bind_param("iss", $id_usuario, $hora_salida, $consentimiento);
$atencion_personal = $_POST['atencion_personal'] ?? null;
$equipo_funcionando = $_POST['equipo_funcionando'] ?? null;
$ambiente_aula = $_POST['ambiente_aula'] ?? null;
$calidad_internet = $_POST['calidad_internet'] ?? null;
$instrucciones_claras = $_POST['instrucciones_claras'] ?? null;
$respuesta_personal = $_POST['respuesta_personal'] ?? null;
$recomendacion_lania = $_POST['recomendacion_lania'] ?? null;
$stmt = $conexion->prepare(
"INSERT INTO salida (
id_usuario, hora_salida, consentimiento,
atencion_personal, equipo_funcionando, ambiente_aula,
calidad_internet, instrucciones_claras, respuesta_personal,
recomendacion_lania
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
);
$stmt->bind_param(
"issiiiiiii",
$id_usuario, $hora_salida, $consentimiento,
$atencion_personal, $equipo_funcionando, $ambiente_aula,
$calidad_internet, $instrucciones_claras, $respuesta_personal,
$recomendacion_lania
);
if ($stmt->execute()) {
echo "Salida registrada correctamente.";