Plantilla PHP

This commit is contained in:
Marklogo 2024-02-28 01:37:44 +01:00
parent d5ec1107a1
commit 560be43dff
18 changed files with 673 additions and 140 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1,139 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="estilos.css" />
<title>Busqueda y eliminacion de registros</title>
</head>
<body>
<form method="post">
<p>*Término a buscar: </p>
<p><input type="text" name="termBusqueda" id="termBusqueda" size="30" placeholder="Introduzca la palabra de Busqueda" required></p>
<input type="submit" name="buscar" value="Buscar">
</form>
<br>
<?php
include_once('caracteres.php');
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['buscar'])) {
$termBusqueda = isset($_POST['termBusqueda'])?$_POST['termBusqueda']:'';
$termBusqueda!=="" ? busqueda($termBusqueda) : null;
unset($_POST);
}
function busqueda($termBusqueda){
$termBusqueda=eliminar_tildes(strtolower($termBusqueda));
$nombre_archivo = "listado_reservas.txt";
$registros=[];
$archivo = fopen($nombre_archivo, 'r');
while (($linea = fgets($archivo)) !== false) {
if (strpos(eliminar_tildes(strtolower($linea)), $termBusqueda) !== false) {
$registros[] = $linea;
}
}
fclose($archivo);
if (count($registros) > 0){
echo "<table>
<tbody>
<thead>
<th>Id Reserva</th>
<th>Nombre</th>
<th>Email</th>
<th> Telefono</th>
<th>Fecha de entrada</th>
<th>Fecha de salida</th>
<th>Fecha de registro</th>
<th> de noches</th>
<th>Acciones</th>
</thead>";
foreach ($registros as $registro) {
$campos = explode("/_/", $registro);
echo "<tr>";
foreach ($campos as $campo) {
echo "<td> $campo </td>";
}
echo "<td>" . genButtonDel($campos[0]) . "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
} else {
echo "<div><h4> No se han encontrado registros con los terminos indicados </h4></div>";
}
}
function genButtonDel($idReserva){
return "<form method=\"POST\" style=\"border: none; padding:0.2rem; min-width: auto; margin:0\">
<input type=\"hidden\" name=\"idReserva\" value=\"$idReserva\" style=\"border: none; padding:0; min-width: auto; margin:0\">
<input type=\"submit\" name=\"borrar\" value=\"Eliminar\" style=\"border: none; background-color:#5e1622; cursor: pointer; padding:0.2rem 0.4rem; min-width: auto; margin:0\">
</form>";
}
?>
<form method="post">
<p>*ID de reserva para borrar: </p>
<input type="text" name="idReserva" value="" id="idReserva" size="15" minlength="15" maxlength="15" placeholder="Id de reserva" />
<input type="submit" name="borrar" value="Borrar reserva de alquiler">
</form>
<br>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['borrar'])) {
$idReserva = isset($_POST['idReserva'])?$_POST['idReserva']:'';
if ($idReserva!==""){
echo "<div>";
echo "<h4>Actuaciones sobre el registro: $idReserva</h4> <br>";
echo eliminaDeLista($idReserva) ?
"<p>Se ha encontrado el registro en el archivo y se ha eliminado</p>" :
"<p>No se encontro el registro especificado en el archivo</p>";
echo eliminaRegistro($idReserva) ?
"<p>Se ha eliminado correctamente el registro de reserva</p>" :
"No se ha encontrado el registro de reserva especificado</p>";
echo eliminaUpload($idReserva) ?
"<p>Se ha eliminado el documento almacenado con el registro</p>" :
"<p>No se ha encontrado documentos asociados al registro</p>";
echo "</div>";
}
unset($_POST);
}
function eliminaDeLista($idReserva){
$nombre_archivo = "listado_reservas.txt";
$flagEncontrado=false;
$registros=[];
$archivo = fopen($nombre_archivo, 'r');
while (($linea = fgets($archivo)) !== false) {
if (strpos($linea, $idReserva) === false) {
$registros[] = $linea;
}else{
$flagEncontrado=true;
}
}
fclose($archivo);
return ($flagEncontrado && file_put_contents($nombre_archivo,$registros));
}
function eliminaRegistro($idReserva){
$dir_reservas ="reservas/";
$nombre_archivo = "$idReserva.txt";
return file_exists($dir_reservas.$nombre_archivo) ?
unlink($dir_reservas.$nombre_archivo) :
false;
}
function eliminaUpload($idReserva){
$dir_uploads= "dni_clientes/";
$file=glob($dir_uploads . "*". $idReserva ."*");
return (count($file) > 0) ? unlink($file[0]) : false;
}
?>
</body>
</html>

View File

@ -0,0 +1,42 @@
<?php
// Eliminar tildes
function eliminar_tildes($cadena){
//Codificamos la cadena en formato utf8 en caso de que nos de errores
//$cadena = utf8_encode($cadena);
//Ahora reemplazamos las letras
$cadena = str_replace(
array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
$cadena
);
$cadena = str_replace(
array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
$cadena );
$cadena = str_replace(
array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
$cadena );
$cadena = str_replace(
array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
$cadena );
$cadena = str_replace(
array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
$cadena );
$cadena = str_replace(
array('ñ', 'Ñ', 'ç', 'Ç'),
array('n', 'N', 'c', 'C'),
$cadena
);
return $cadena;
}

View File

@ -0,0 +1,129 @@
@charset "UTF-8";
*{
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
border: none;
outline: none;
}
p{
margin-bottom: 10px;
}
table {
width:80%;
min-width:350px;
margin:auto;
background-color:#9d2236;
border:2px solid #000000;
color:white;
}
td,th {
text-align: center;
padding:3px;
}
form,div {
width:80%;
min-width:350px;
background-color:#9d2236;
border:2px solid #000000;
padding:10px;
box-sizing:border-box;
color:white;
font-size:18px;
margin:auto;
margin-top: 20px;
}
fieldset {
background-color:#9d2236;
border:2px solid #ffffff;
padding:10px;
box-sizing:border-box;
}
#flex {
display:flex;
justify-content:space-between;
}
label {
margin-right:10px;
margin-bottom: 5px;
}
input {
color:white;
background-color:#9d2236;
border: 2px solid white;
padding: 2px;
min-width: 300px;
}
legend {
font-weight: bold;
font-size: 20px;
margin:10px;
}
select,option {
color:white;
background-color:#9d2236;
border: 2px solid white;
padding: 2px;
}
textarea {
background-color:#9d2236;
width:100%;
height:200px;
color:white;
border: 2px solid white;
padding:10px;
box-sizing:border-box;
margin-left: 10px;
}
input[type=submit], input[type=button],input[type=reset] {
background-color:#9d2236;
color:white;
font-size: 16px;
font-weight: lighter;
margin-top: 10px;
padding: 5px;
border:2px solid #000000;
border-radius:5px;
box-shadow: 1px 2px 3px #fff;
}
/* Media query para pantallas de menos de 450 píxeles de ancho */
@media (max-width: 450px) {
label {
display: block;
margin-bottom: 5px;
}
#flex {
flex-wrap:wrap;
flex-direction: column-reverse;
}
textarea {
margin-left: 0px;
}
table {
display: block;
width: 80%;
overflow-x: auto;
}
}

View File

@ -0,0 +1,197 @@
<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Reservas hotel</title>
<link rel="stylesheet" type="text/css" href="estilos.css" />
<script>
// Función obtener() que realizará la captación de datos,los cálculos y la escritura del mensaje de info
function obtener() {
// Declaro y obtengo el valor de las variables
//Calcular periodo de la estancia (noches)
const inicio=document.getElementById("entradaH").valueAsNumber;
const fin=document.getElementById("salida").valueAsNumber;
const dif=fin - inicio;
const noches=Math.ceil(dif/(1000*60*60*24));
document.getElementById("noches").value=noches;
const habitacion=document.getElementById("habitacion").value;
const regimen=document.getElementById("regimen").value;
const spa=document.getElementById("spa").value;
const guia=document.getElementById("guia").value;
const nombreCliente=document.getElementById("nombre").value;
//Cáculo extras (spa y guia)
let spaT;
if (spa>5) {
spaT=spa*20;
}else {
spaT=spa*30;
}
let guiaT;
if(guia>7) {
guiaT=guia*40;
} else {
guiaT=guia*50;
}
// Tipo habitación
let hotel;
if (habitacion === "simple") {
hotel=50;
}
if (habitacion === "doble") {
hotel=80;
}
if (habitacion === "triple") {
hotel=120;
}
if (habitacion === "suite") {
hotel=150;
}
//Tipo de regimen
let comidas;
if (regimen === "desayuno") {
comidas=50;
}
if (regimen === "mediapension") {
comidas=80;
}
if (regimen === "pensioncompleta") {
comidas=120;
}
if (regimen === "todoincluido") {
comidas=150;
}
// Gastos estancia hotel+comidas
const hotelT=hotel*noches;
const regimenT=comidas*noches;
const estancia=hotelT+regimenT;
// Descuento por larga estancia
let estanciaDescuento;
if (noches <= 4) {
estanciaDescuento = estancia;
} else if (noches >= 5 && noches <= 10) {
estanciaDescuento = estancia * 0.85;
} else if (noches >= 11) {
estanciaDescuento = estancia * 0.75;
}
//Envío el precio total sin IVA al formulario
document.getElementById("estancia").value=estanciaDescuento;
//Coste total con extras
const total=estanciaDescuento+spaT+guiaT;
const totalI=(total*1.21).toFixed(2);
// Envío el precio con IVA al formulario
document.getElementById("total").value=totalI;
// Precio de anulación
const precioAnulacion=(total*0.2).toFixed(2);
// Calcular días que faltan y fecha de regreso
const hoy=new Date().getTime();// Fecha de la reserva
const entrada=document.getElementById("entradaH").valueAsNumber;
const dif2=entrada-hoy;
const diasFaltan=dif2/(1000*60*60*24);// Días que faltan
const regresoF=new Date(fin);// Obtener en UTC
const regresoP=regresoF.toLocaleDateString();//Pasar fecha a formato corto dd/mm/xxxx
const anulacion=entrada-(3*24*60*60*1000);//Fecha de anulación
const anulacionF=new Date(anulacion);
const anulacionP=anulacionF.toLocaleDateString();
//Mensaje de información
const frase=
"Hola "+nombreCliente+"\n"
+"Faltan "+(Math.ceil(diasFaltan))+ " días "+"para tu viaje"+"\n"
+"Tu fecha de regreso es el "+regresoP+"\n"
+"Puedes anular tu reserva hasta el día "+anulacionP+"\n"
+"El coste de la anulación será de " +precioAnulacion+ " euros" ;
//Enviar mensaje al formulario
document.getElementById("info").value=frase;
}
</script>
</head>
<body>
<div id="container">
<form action="recibe_formulario_hotel.php" method="post" enctype="multipart/form-data">
<h1>Reserve su habitación</h1>
<fieldset>
<legend>Datos de la reserva</legend>
<p><label for="entradaH">Elige la fecha de entrada</label> <input type="date" id="entradaH" name="entrada" value="2024-03-01">
<p><label for="salida">Elige la fecha de salida</label> <input type="date" id="salida" name="salida" value="2024-03-10"></p>
<p><label for="habitacion">Seleccione el tipo de habitación</label>
<!-- Lista de selección -->
<select name="habitacion" id="habitacion">
<option value="simple">Simple</option>
<option value="doble">Doble</option>
<option value="triple">Triple</option>
<option value="suite">Suite</option>
</select></p>
<p><label for="regimen">Seleccione el regimen de alojamiento</label>
<!-- Lista de selección -->
<select name="regimen" id="regimen">
<option value="desayuno">Desayuno</option>
<option value="mediapension">Media pensión</option>
<option value="pensioncompleta">Pensión Completa</option>
<option value="todoincluido">Todo Incluido</option>
</select></p>
<p><label for="estancia">Coste de la estancia (Habitación + Comidas)</label> <input type="text" name="estancia" id="estancia"></p>
<p><label for="spa">Acceso al Spa, elija cuantos días</label> <input type="number" name="spa" id="spa" value="0" size="3"></p>
<p><label for="guia">Servicio de guía turístico, elija cuantos días </label><input type="number" name="guia" id="guia" value="0" size="3"></p>
<p><label for="total">Coste total con IVA incluido </label><input type="text" name="total" id="total" ></p>
</fieldset>
<fieldset>
<legend>Datos personales</legend>
<p><label for="nombre">*Nombre: </label><input type="text" name="nombre" id="nombre" placeholder="Nombre y Apellidos" required value = "Marcos Lopez Gomez"></p>
<p><label for="mail">*Correo electrónico: </label><input type="email" name="email" id="mail" placeholder="Escribe tu correo" required value = "marklogo@gmail.com"></p>
<p><label for="telefono">*Teléfono:</label> <input type="tel" id="telefono" name="telefono" required value="649348375" ></p>
<p>Check-in online (opcional):</p>
<p><label for="dni">DNI:</label> <input type="text" id="dni" name="dni" value="33340763D" ></p>
<p><label for="adjuntos">Adjunte fotocopia de DNI </label><input type="file" name="dnifile" id="dnifile" accept=".pdf,.jpg" ></p>
<div id="flex">
<div>
<input type="button" value="Calcular coste total" onclick="obtener()">
<br><input type="reset" name="limpiar" value="Borrar" />
<br><input type="submit" value="Enviar la reserva" >
<input id="noches" name="noches" type="hidden" value="noches">
</div>
<textarea name="info" id="info" >Información de su viaje</textarea>
</div>
</fieldset>
</form>
</div>
<br>
</body>
</html>

View File

@ -0,0 +1,166 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="estilos.css" />
<title>Reservas Hotel!!!</title>
</head>
<body>
<div>
<?php
// Validar el método de solicitud HTTP
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$datosReserva = recopilarDatosReserva($_POST,['entrada', 'salida', 'habitacion', 'regimen', 'estancia', 'spa', 'guia', 'total', 'nombre', 'email', 'telefono', 'dni', 'noches', 'info']);
$resultadoProcesamiento = procesarReserva($datosReserva);
mostrarResultado($resultadoProcesamiento);
} else {
echo "<h2>No se han recibido datos del formulario</h2>";
}
// Función para recopilar datos del formulario y sanitizarlos
function recopilarDatosReserva($formulario, $campos )
{
$datos = [];
foreach ($campos as $campo) {
$datos[$campo] = trim($formulario[$campo]) ?? '';
}
return $datos;
}
// Función para procesar la reserva
function procesarReserva($datosReserva)
{
// Variables para el resultado del procesamiento
$exito = true;
$msgExito = [];
$msgError = [];
// Obtener datos de reserva
$entrada = $datosReserva['entrada'];
$salida = $datosReserva['salida'];
$habitacion = $datosReserva['habitacion'];
$regimen = $datosReserva['regimen'];
$spa = $datosReserva['spa'];
$guia = $datosReserva['guia'];
$nombre = $datosReserva['nombre'];
$email = $datosReserva['email'];
$telefono = $datosReserva['telefono'];
$dni = $datosReserva['dni'];
$noches = $datosReserva['noches'];
$total = $datosReserva['total'];
// Generar identificador de reserva
$idReserva = time() . '_' . mt_rand(1000, 9999);
// Fecha de reserva
$fechaReserva = date("d-m-Y H:i:s");
// Estructurar ficha de reserva
$fichaReserva = "Id reserva: $idReserva \r\n";
$fichaReserva .= "Fecha de reserva: $fechaReserva \r\n";
$fichaReserva .= "Fecha de entrada: $entrada \r\n";
$fichaReserva .= "Fecha de salida: $salida \r\n";
$fichaReserva .= "Tipo de habitación: $habitacion \r\n";
$fichaReserva .= "Regimen de alojamiento: $regimen \r\n";
$fichaReserva .= "Días Spa: $spa \r\n";
$fichaReserva .= "Días Guia: $guia \r\n";
$fichaReserva .= "Duración estancia: $noches \r\n";
$fichaReserva .= "Coste Total: $total \r\n";
$fichaReserva .= "Nombre: $nombre \r\n";
$fichaReserva .= "Correo electrónico: $email \r\n";
$fichaReserva .= "Teléfono: $telefono \r\n";
$fichaReserva .= "DNI: $dni \r\n";
// Enviar correo electrónico con los detalles de la reserva
$destinatario = "appasin04@gmail.com";
$asunto = "Informacion de reserva - $idReserva";
$headers = 'Reply-To: appasin04@gmail.com' . "\r\n";
$headers .= 'Bcc: ' . $email . "\r\n";
if (!mail($destinatario, $asunto, $fichaReserva, $headers)) {
$exito = false;
$msgError[] = "Error al enviar el correo electrónico.";
}
// Guardar la ficha de reserva en un archivo
$dir_reservas ="reservas/";
!is_dir($dir_reservas) ? !mkdir($dir_reservas, 0777, true) : null;
$nombre_archivo = $dir_reservas . $idReserva . ".txt";
if (file_put_contents($nombre_archivo, $fichaReserva) === false) {
$exito = false;
$msgError[] = "Error al guardar la ficha de reserva.";
} else {
$msgExito[] = "<h2> Reserva confirmada ! </h2>" . "<p>". nl2br($fichaReserva)."</p>";
}
// Añadir al listado_reservas.txt una línea de reserva
$registroReserva = implode('/_/', [$idReserva, $nombre, $email, $telefono, $entrada, $salida, $fechaReserva, $noches]) . "\r\n";
$nombre_archivo = "listado_reservas.txt";
if (file_put_contents($nombre_archivo, $registroReserva, FILE_APPEND | LOCK_EX) === false) {
$exito = false;
$msgError[] = "Error al guardar la lista de reservas.";
}
if (isset($_FILES['dnifile']) && $_FILES['dnifile']['error'] === UPLOAD_ERR_OK){
$exitoUpload = true;
$dir_uploads= "dni_clientes/";
!is_dir($dir_uploads) ? !mkdir($dir_uploads, 0777, true) : null;
$nombreArchivo = implode("_", [$dni, $idReserva, $_FILES['dnifile']['name']]);
$extension_archivo = strtolower(pathinfo($_FILES["dnifile"]["name"], PATHINFO_EXTENSION));
$tamano_maximo = 2 * 1024 * 1024;
$extensiones_permitidas = array("jpg", "jpeg", "pdf");
if(!in_array($extension_archivo, $extensiones_permitidas)){
$exitoUpload =false;
$exito = false;
$msgError[] = "El fichero no tiene una extension valida.";
}
if ($_FILES["dnifile"]["size"] > $tamano_maximo){
$exitoUpload =false;
$exito = false;
$msgError[] = "El fichero excede el tamaño maximo (2Mb).";
}
if ($exitoUpload){
if(move_uploaded_file($_FILES["dnifile"]["tmp_name"],$dir_uploads . $nombreArchivo)){
$msgExito [] = "<h4>El fichero adjunto se almaceno correctamente</h4>";
}else{
$exito = false;
$msgError = "Ocurrio un error al almacenar el fichero adjunto";
}
}
}
$resultado = [
'exito' => $exito,
'msgExito'=> $msgExito,
'msgError' => $msgError
];
return $resultado;
}
function mostrarResultado($resultado)
{
foreach ($resultado['msgExito'] as $key => $value) {
echo "<p> $value </p>";
}
if (!$resultado['exito']) {
echo "<h4>Se han encontrado los siguientes problemas al procesar su solicitud:</h4>";
echo "<ul>";
foreach ($resultado['msgError'] as $key => $value) {
echo "<li> $value </li>";
}
echo "</ul>";
}
}
?>
</div>
</body>
</html>

View File

@ -1,140 +0,0 @@
<?php
// Validar el método de solicitud HTTP
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Recopilar datos del formulario
$datosReserva = recopilarDatosReserva($_POST);
// Procesar la reserva
$resultadoProcesamiento = procesarReserva($datosReserva);
// Mostrar resultado al usuario
mostrarResultado($resultadoProcesamiento);
} else {
echo "No se han recibido datos del formulario";
}
// Función para recopilar datos del formulario
function recopilarDatosReserva($formulario)
{
$datos = [];
$campos = ['entrada', 'salida', 'habitacion', 'regimen', 'estancia', 'spa', 'guia', 'total', 'nombre', 'email', 'telefono', 'dni', 'noches', 'info'];
foreach ($campos as $campo) {
$datos[$campo] = $formulario[$campo] ?? '';
}
return $datos;
}
// Función para procesar la reserva
function procesarReserva($datosReserva)
{
// Variables para el resultado del procesamiento
$exito = true;
$mensaje = '';
// Obtener datos de reserva
$entrada = $datosReserva['entrada'];
$salida = $datosReserva['salida'];
$habitacion = $datosReserva['habitacion'];
$regimen = $datosReserva['regimen'];
$spa = $datosReserva['spa'];
$guia = $datosReserva['guia'];
$nombre = $datosReserva['nombre'];
$email = $datosReserva['email'];
$telefono = $datosReserva['telefono'];
$dni = $datosReserva['dni'];
$noches = $datosReserva['noches'];
$total = $datosReserva['total'];
// Generar identificador de reserva
$idReserva = time() . '_' . mt_rand(0000, 9999);
// Fecha de reserva
$fechaReserva = date("d-m-Y H:i:s");
// Estructurar ficha de reserva
$fichaReserva = "Id reserva: $idReserva \r\n";
$fichaReserva .= "Fecha de reserva: $fechaReserva \r\n";
$fichaReserva .= "Fecha de entrada: $entrada \r\n";
$fichaReserva .= "Fecha de salida: $salida \r\n";
$fichaReserva .= "Tipo de habitación: $habitacion \r\n";
$fichaReserva .= "Regimen de alojamiento: $regimen \r\n";
$fichaReserva .= "Días Spa: $spa \r\n";
$fichaReserva .= "Días Guia: $guia \r\n";
$fichaReserva .= "Duración estancia: $noches \r\n";
$fichaReserva .= "Coste Total: $total \r\n";
$fichaReserva .= "Nombre: $nombre \r\n";
$fichaReserva .= "Correo electrónico: $email \r\n";
$fichaReserva .= "Teléfono: $telefono \r\n";
$fichaReserva .= "DNI: $dni \r\n";
// Enviar correo electrónico con los detalles de la reserva
$destinatario = "appasin04@gmail.com";
$asunto = "Informacion de reserva - $idReserva";
$headers = 'Reply-To: appasin04@gmail.com' . "\r\n";
$headers .= 'Bcc: ' . $email . "\r\n";
if (!mail($destinatario, $asunto, $fichaReserva, $headers)) {
// Si falla el envío de correo, se marca como fallo
$exito = false;
$mensaje = "Error al enviar el correo electrónico.";
}
// Guardar la ficha de reserva en un archivo
$nombre_archivo = "reservas/" . $idReserva . ".txt";
if (!guardarFichaReserva($fichaReserva, $nombre_archivo)) {
// Si falla la escritura del archivo, se marca como fallo
$exito = false;
$mensaje = "Error al guardar la ficha de reserva.";
}
// Añadir al listado_reservas.txt una línea de reserva
$registroReserva = implode('/_/', [$idReserva, $nombre, $email, $telefono, $entrada, $salida, $fechaReserva, $noches]) . "\r\n";
$nombre_archivo = "listado_reservas.txt";
if (!guardaListaDatos($registroReserva, $nombre_archivo)) {
// Si falla la escritura del archivo, se marca como fallo
$exito = false;
$mensaje = "Error al guardar la lista de reservas.";
}
// Resultado del procesamiento
$resultado = [
'exito' => $exito,
'mensaje' => $mensaje
];
return $resultado;
}
// Función para guardar la ficha de reserva en un archivo
function guardarFichaReserva($fichaReserva, $nombre_archivo)
{
return file_put_contents($nombre_archivo, $fichaReserva) !== false;
}
// Función para añadir al listado_reservas.txt una línea de reserva
function guardaListaDatos($registroReserva, $nombre_archivo)
{
return file_put_contents($nombre_archivo, $registroReserva, FILE_APPEND | LOCK_EX) !== false;
}
// Función para mostrar el resultado al usuario
function mostrarResultado($resultado)
{
if ($resultado['exito']) {
echo "<p>{$resultado['mensaje']}</p>";
} else {
echo "<p>No se ha podido realizar la reserva correctamente.</p>";
}
}