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>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||