- Основы синтаксиса
- Типы
- Переменные
- Константы
- Выражения
- Операторы
- Управляющие конструкции
- Функции
- Классы и объекты
- Пространства имен
- Errors
- Исключения
- Generators
- Ссылки. Разъяснения
- Предопределённые переменные
- Предопределённые исключения
- Встроенные интерфейсы и классы
- Контекстные опции и параметры
- Поддерживаемые протоколы и обработчики (wrappers)
Коментарии
<?php
// Inicializamos el array para almacenar todas las reservas
$reservasCompletas = array();
// Verificamos si el formulario se ha enviado
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Recuperamos los datos del formulario
$hab = $_POST["habitacion"];
$nochesReservadas = (int)$_POST["noches"];
$fechaReserva = $_POST["fecha"];
// Crear un array de reserva individual
$reserva = [
'habitacion' => $hab,
'noches' => $nochesReservadas,
'fecha' => $fechaReserva,
];
// Si ya hay reservas previas, las recuperamos y reconstruimos los arrays
if (!empty($_POST['reservas_previas'])) {
$reservasPrevias = explode(",", $_POST['reservas_previas']);
foreach ($reservasPrevias as $reservaStr) {
// Convertimos cada reserva de cadena a array asociativo
$reservaArray = explode("|", $reservaStr);
$reservasCompletas[] = [
'habitacion' => $reservaArray[0],
'noches' => $reservaArray[1],
'fecha' => $reservaArray[2],
];
}
}
// Añadimos la nueva reserva
$reservasCompletas[] = $reserva;
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Reserva de Hotel</title>
</head>
<body>
<h1>Reserva de Habitación</h1>
<form action="" method="post">
<!-- Menú desplegable para seleccionar tipo de habitación -->
<label for="habitacion">Tipo de habitación: </label>
<select name="habitacion" id="habitacion" required>
<option value="Sencilla">Sencilla</option>
<option value="Doble">Doble</option>
<option value="Suite">Suite</option>
</select>
<!-- Campo para la cantidad de noches -->
<label for="noches">Número de noches: </label>
<input type="number" id="noches" name="noches" min="1" step="1" value="1" required>
<!-- Campo para la fecha de llegada -->
<label for="fecha">Fecha de llegada: </label>
<input type="date" id="fecha" name="fecha" required>
<!-- Campo oculto para almacenar las reservas previas, usamos implode para convertir el array en cadena -->
<input type="hidden" name="reservas_previas" value='<?php
// Convertimos las reservas en cadenas usando | para separar valores y , para separar reservas
$reservasStr = array_map(function($reserva) {
return implode("|", $reserva);
}, $reservasCompletas);
echo implode(",", $reservasStr);
?>'>
<!-- Botón para enviar el formulario -->
<button type="submit">Agregar reserva</button>
</form>
<h2>Resumen de la reserva</h2>
<?php if (!empty($reservasCompletas)): ?>
<?php foreach ($reservasCompletas as $reserva): ?>
<p>
Habitación: <?= $reserva['habitacion'] ?> <br>
Noches: <?= $reserva['noches'] ?> <br>
Fecha de llegada: <?= $reserva['fecha'] ?> <br>
</p>
<?php endforeach; ?>
<?php else: ?>
<p>No hay reservas realizadas aún.</p>
<?php endif; ?>
</body>
</html>