Plantilla PHP
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 255 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 64 KiB |
139
Practicas/Practicas_PHP/ejercicios/Plantilla Examen/busqueda.php
Executable 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>Nº Telefono</th>
|
||||
<th>Fecha de entrada</th>
|
||||
<th>Fecha de salida</th>
|
||||
<th>Fecha de registro</th>
|
||||
<th>Nº 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>
|
||||
42
Practicas/Practicas_PHP/ejercicios/Plantilla Examen/caracteres.php
Executable 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;
|
||||
}
|
||||
129
Practicas/Practicas_PHP/ejercicios/Plantilla Examen/estilos.css
Executable 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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
197
Practicas/Practicas_PHP/ejercicios/Plantilla Examen/formulario_hotel.html
Executable 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>
|
||||
0
Practicas/Practicas_PHP/ejercicios/Plantilla Examen/listado_reservas.txt
Executable file
166
Practicas/Practicas_PHP/ejercicios/Plantilla Examen/recibe_formulario_hotel.php
Executable 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>
|
||||
|
|
@ -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>";
|
||||
}
|
||||
}
|
||||