Hola a todos, estoy almacenando en mi base datos dos campos datetime.
Quiero verificar en mi base que el rango de las horas ingresadas no se encuentren en el rango de uno ya almacenado, tampoco que se repitan el mismo rango de horas y por ultimo que no permita ingresar una de las horas entre alguno de los rangos ya almacenados. Siento ser muy redundante pero creo que asi se entiende mejor.
Adjunto el codigo que tengo:
Código PHP:
<?php
session_start();
require ('/config.php');
$link = mysqli_connect("$hotsdb","$usuariodb","$clavedb") or die(mysqli_error());
mysqli_select_db( $link, 'calendario');
$banda = mysqli_real_escape_string($link,$_POST['nombre']);
$start = mysqli_real_escape_string($link,$_POST['start']);
$end = mysqli_real_escape_string($link,$_POST['end']);
$telf = mysqli_real_escape_string($link,$_POST['telf']);
if ($banda == null || $start == null || $end == null || $telf == null)
{
echo '<span>Por favor complete todos los campos.</span>';
mysqli_close($link);
}
else
{
$verif1=strtotime ( '+1 hours' , strtotime ( $start ) ) ;
$hora1= date ( 'Y-m-d H:i:s' , $verif1 );
$verif2=strtotime ( '-1 hours' , strtotime ( $end ) ) ;
$hora2= date ( 'Y-m-d H:i:s' , $verif2 );
$consulta="SELECT * from calendar WHERE start AND end BETWEEN '".$hora1."' AND '".$hora2."'";
$consulta2="SELECT * from calendar WHERE start = '".$start."' AND end = '".$end."'";
$consulta3="SELECT * from calendar WHERE start AND end BETWEEN '".$start."' AND '".$end."'";
$resultfecha=mysqli_query($link, $consulta) or die (mysql_error());
$resultfecha2=mysqli_query($link, $consulta2) or die (mysql_error());
$resultfecha3=mysqli_query($link, $consulta3) or die (mysql_error());
if (mysqli_num_rows($resultfecha2) != 0) {
echo '<span>Horas ya reservadas, eliga otras. </span>';
} else {
if (mysqli_num_rows($resultfecha3) != 0) {
echo '<span>Las horas elegidas interfieren con otras. </span>';
mysqli_close($link);
} else {
if (mysqli_num_rows($resultfecha) != 0){
$sql = "INSERT INTO calendar (title,start,end,telf) VALUES ('$banda','$start','$end','$telf')";
$result = mysqli_query($link, $sql);
echo '<span>¡Reserva realizada!</span>';
mysqli_close($link);
} else {
echo '<span> Las horas elegidas interfieren con otras reservas. </span>';
mysqli_close($link);
}
}
}
}
?>
Cuando ejecuto ese código cumple con todo pero no me permite almacenar nada, intento almacenar un rango que no se repita o interfiera y no se almacena me dice uno de los mensajes que coloque que esta en el ultimo IF y no entiendo el porque, espero alguien me pueda ayudar.
Muchas gracias y saludos!