Tengo un problema con un buscador de fecha y hora, he buscado en el foro alguna solucion pero no he logrado encontrarla, les explico mi situacion.
Estoy haciendo una solucion basada en PHP y MySQL para una compañia de transporte de personal, en dicho programa se agendan los viajes con datos como chofer, camion, ruta, empresa a la que se dara servicio, fecha del viaje y hora; para poder agendar un nuevo viaje, reviso primero que tanto el chofer como el camion no esten programados en otro viaje agendado anteriormente a la misma fecha y hora ni 2 horas antes ni despues (que es lo que normalmente tarda cada uno de los viajes realizados). Hasta aqui todo ok, peeeeero, mi problema viene cuando el viaje se programa para despues de las 22 :00 (10 de la noche) o antes de las 02:00 am, ya que la busqueda involucraria buscar en el dia despues del q se programa originalmente o en el dia anterior, pongo un par de ejemplos.
Si el viaje se programa a las 23:00 (11 de la noche) del 10/sept/2011, mi busqueda debera contemplar, para cumplir con las 2 horas, buscar hasta las 01:00 del 11/sept/2011.
Si el viaje se programa a las 01:00 del 10/sept/2011, la busqueda se tendra que realizar desde las 23:00 del dia 09/sept/2011
El problema se pone peor cuando llegase a ser fin de mes, o de año :s ya que cambia mes y/o hasta año.
Adjunto la parte del programa que tengo.
Código PHP:
$hora_antes=$hora_viaje2-2;
$hora_desp=$hora_viaje2+2;
$hora_antes_con= $hora_antes.":".$minuto_viaje2;
$hora_desp_con=$hora_desp.":".$minuto_viaje2;
#Vamos a buscar registros en la BD donde ya sea el chofer y/o el camion no esten usados en esa fecha a esa hora
$verif_datos_viaje = mysqli_query($link, "SELECT * FROM Viajes WHERE (chofer='$chofer_viaje2' AND fecha='$fecha_viaje2' AND hora BETWEEN '$hora_antes_con' AND '$hora_desp_con') OR (camion='$camion_viaje2' AND fecha='$fecha_viaje2' AND hora BETWEEN '$hora_antes_con' AND '$hora_desp_con')");
$cont_aux=0;
while ($dato_repetido= mysqli_fetch_array($verif_datos_viaje,MYSQLI_BOTH))
{ if ($count_aux == 0)
{
echo "<p align='center'>Al momento de querer guardar la informacion, se encontro este registro donde uno o varios datos parecen empalmarse con el viaje que se desea programar, favor de revisar la informacion y volver a intentarlo</p>";
echo "<table align='center' width='90%' cellspacing ='5' cellpadding='1' border='4' bordercolor='2B29C6' bgcolor='FCE303' rules='all'>";
include ("titulos_de_las_filas_resp_BD.inc"); #Contiene los titulos de las columnas en format completo a como esta en la BD
$count_aux=1;
}
echo "<tr>";
for ($cuenta=0;$cuenta<11;$cuenta++) #Recorremos todos los campos, ya que son 11, vamos desplegandolos todos de uno en uno
{
echo "<td>";
echo $dato_repetido[$cuenta];
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
Alguna sugerencia???
De antemano gracias por su aporte.
Saludos!!!!!!!!!