Ir al contenido principal

Comprobar en php si una fecha no está reservada

   Con el siguiente código en php comprobamos que una fecha no esté reservada. Al principio del código recibimos la fecha de entrada y la fecha de salida con el método POST después incluyo la conexión con la base de datos en POO explicada en el post "consultar base de datos en poo". Seguidamente hacemos las comprobaciones necesarias: que la fecha de entrada no sea mayor que la de salida. También deberíamos comprobar que el formato de la fecha sea el correcto, pero, en este caso no lo hago porque sé que el formato es el correcto gracias a la ayuda de un calendario que autocompleta el el formulario con un determinado formato. Algo que explicaré en otro post. Este ejemplo podéis comprobarlo en esta web que estoy desarrollando: www.casaruralmaxi.com.
<?php
//Comprobamos en la base de datos que las fechas no están ocupadas
/******** CONECTAR CON BASE DE DATOS **************** */
$entrada = $_POST['entrada'];
$salida = $_POST['salida'];
include('conectadb.php');
$db = new conectadb();

/* ******* Seleccionamos la tabla ********* */
$sql = "SELECT * FROM diasreserva";
$result = $db->query($sql);
  // verificamos que no haya error
  if (! $result){
  echo "La consulta SQL contiene errores.".mysqli_connect_error();
  exit();
  }else {
  //Si no hay error obtenemos los datos resultado de la consulta
  $e = 0;
  $libre = true; //en principio la fecha está libre hasta que no demostremos lo contrario
  //Mientras haya resultados en la búsqueda:
  while ($row = mysqli_fetch_row($result)){
    //Suponiendo que en la base de datos tenemos en la primera columna la fecha de entrada ($row{0]) y en la segunda la fecha de salida ($row[1])
    $FechaEntrada[$e] = strtotime($row[0]);
    $FechaSalida[$e] = strtotime($row[1]);

    //Comprobamos que la fecha de salida no sea menor que la de entrada
    if (strtotime($salida) < strtotime($entrada)){
    //Si lo es cerramos la base de datos, mostramos mensaje y regresamos al formulario de reservas.
    mysqli_close($db);
    echo "<script type='text/javascript'> alert ('La fecha de Salida no puede ser menor que la fecha de entrada');window.location='reservasform.php'</script>";
    }

    //Comprobamos que la fecha no está escogida
    if (strtotime($entrada) >= $FechaEntrada[$e] && strtotime($entrada) <= $FechaSalida[$e]) {
    $libre = false;
    }
    if (strtotime($entrada) <= $FechaSalida[$e] && strtotime($entrada) >= $FechaEntrada[$e]){
    $libre = false;
    }
    if (strtotime($salida) <= $FechaSalida[$e] && strtotime($salida) >= $FechaEntrada[$e]){
    $libre = false;
    }

    if (!$libre){
    //Si no está libre cerramos la conexión con la base de datos, mostramos mensaje y volvemos al formulario de reserva
    mysqli_close($db);
    echo "<script type='text/javascript'> alert ('Lo sentimos, la fecha escogida está ocupada');window.location='reservasform.php'</script>";
    }
  }
 $e++;
}
//Si está libre continuamos con el código y mostramos los datos de de la reserva
?>

Comentarios

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod