Как искать файл CSV с помощью php, проверяя, имеет ли место дату между двумя диапазонами

Я сделал предыдущий пост, который был слишком расплывчатым. Я провел много исследований и думаю, что могу быть более конкретным.

while (!feof($file_handle)) { $loansinfo = fgetcsv($file_handle); // Make sure we only check data for the game we posted if($loansinfo[0]==$ID) { $referenceDate = $WantedDate; $fromDate = "$loansinfo[5]"; $toDate = "$loansinfo[6]"; // Convert dates to timestamps (strings to integers) $referenceTimestamp = strtotime( $referenceDate ); $fromTimestamp = strtotime( $fromDate ); $toTimestamp = strtotime( $toDate ); $isBetween = $referenceTimestamp >= $fromTimestamp and $referenceTimestamp <= $toTimestamp; //refuse booking echo('<script type="text/javascript">alert("Game Already Booked");</script>'); exit; } } // otherwise execute save code 

Проблема в том, что я всегда получаю «Игра уже забронирована» . Зачем?

Пример данных файла CSV по запросу:

 ID, GameName,GameCost, DaysRequested, Total, ReservationStart, DateEnd 5,Pinball, 3.99,7, 27.99, 01/01/2015, 08/01/2015 

Хотя следует сказать, что форма требует ввода даты в виде YYYY-MM-DD . У меня есть java-скрипт, который выполняет преобразование.

Я видел это! Попробуй это:

 while (!feof($file_handle)) { $loansinfo = fgetcsv($file_handle); if($loansinfo[0]==$ID){ $FromDate = "$loansinfo[5]"; $ToDate ="$loansinfo[6]"; if (strtotime($DateBorrowedFrom) <= strtotime($WantedDate)) { if(strtotime($ToDate) >= strtotime($WantedDate)){ $CantBook = True; } } else { if (strtotime($DateBorrowedFrom) <= strtotime($DateTo)) { $CantBook= true; } } } } fclose($file_handle); if($CantBook = true){ echo('<script type="text/javascript">alert("Game is already Booked");</script>'); } else{ //Saving the booking 

Из внешнего вида вашего кода вы не проверяете результат $isBetween .

Вот модифицированная версия, которая поможет вам приблизиться, если ваши даты будут отформатированы правильно.

 while (!feof($file_handle)) { $loansinfo = fgetcsv($file_handle); // Make sure we only check data for the game we posted if($loansinfo[0]==$ID) { $referenceDate = $WantedDate; $fromDate = "$loansinfo[5]"; $toDate = "$loansinfo[6]"; // Convert dates to timestamps (strings to integers) $referenceTimestamp = strtotime( $referenceDate ); $fromTimestamp = strtotime( $fromDate ); $toTimestamp = strtotime( $toDate ); $isBetween = $referenceTimestamp >= $fromTimestamp and $referenceTimestamp <= $toTimestamp; if($isBetween == true) { //refuse booking echo('<script type="text/javascript">alert("Game Already Booked");</script>'); exit; } } }