Ma base de données contient des variables de date, de début et de fin. Dans mon code, je prends le début et eux comme l'utilisateur les sélectionne, et les convertir en horodatages comme si (tout dans une boucle foreach) ..La validation de l'horodatage se chevauche avec PHP
$selectionDate = strtotime($timeQry['date']);
$startTimes[] = strtotime($timeQry['start'],$selectionDate);
$endTimes[] = strtotime($timeQry['end'],$selectionDate);
Cela me donne les heures de début et de fin correctes en tant que timestamp. J'ai alors une instruction logique pour la valider et de voir si l'un des temps sélectionnés se chevauchent ....
if(($startTimes[1] < $startTimes[0]) && ($endTimes[1] > $startTimes[0]) ||
($startTimes[1] > $startTimes[0]) && ($startTimes[1] < $endTimes[0]))
{
echo "overlap"
}
Cela fonctionne bien la plupart du temps, si l'un des temps de la fin si après 12 minuit (par exemple 02:00), cet horodatage sera plus petit que l'heure de début car le code utilise la date de début de la réservation. Cela provoque l'échec de la logique et le chevauchement est manqué.
J'ai pensé à faire:
if(($endTimes[$k] >= $selectionDate))
{
$endTimes[] = strtotime($timeQry['end'],$newDate+ 1253574000);
}
else
{
$endTimes[] = strtotime($timeQry['end'],$selectionDate);
}
//...run same logic query
Ce qui crée une nouvelle date qui est un jour plus tard. Mais je ne pense pas que ce soit la bonne façon de s'y prendre. Si quelqu'un peut m'aider, je serais très reconnaissant. Ça me fait un peu me gratter la tête celui-là! Merci beaucoup
Yeh J'ai réalisé que le design aurait dû être meilleur. J'étais nouveau dans ce genre de choses à l'époque. Je peux le changer à l'avenir, mais pour l'instant, j'ai besoin d'obtenir ce tri en premier – whamo