проверка диапазона дат в php - PullRequest
0 голосов
/ 09 июня 2011

Я собираюсь реализовать функцию поиска в mySQL для приложения, которое я создаю, пользователь вводит [на данный момент, позже будет выбор календаря] дату начала и окончания, и нажимает поиск

  1. if (начальный день> конечный день), THEN ошибка
  2. if (начальный месяц> end month), THEN ошибка

Пока все в порядке, но с учетом этого

  1. if (начальный день> конечный день) && (начальный месяц <конечный месяц), THEN поиск </li>
  2. if (начальный месяц> конечный месяц) && (начальный год <конечный год), THEN поиск</li>

Я не беспокоюсь о високосных годах, я буду циклически повторять все месяцы до 31 дня, потому что, если день находится в БД, он извлечет его, в противном случае, он перейдет к 31 и ничего не вернеттак как дня нет,

Я использую varchar для своих дат (без отметки времени), так как они импортированы из json [iOS]

Хорошо, надеюсь, имеет смысл,

здесь код,

<?PHP
  $start = $_POST['start_date'];
  $end = $_POST['end_date'];
  $start_time = explode('/', $start);
  $end_time = explode('/', $end);
   $count_start = $start_time[0];
  $count_end = $end_time[0];
  $month_start = $start_time[1];
  $month_end = $end_time[1];
  $year_start = $start_time[2];
  $year_end = $end_time[2];

  function cuenta($count_start, $count_end) {

for($count_start; $count_start <= $count_end; $count_start++) {

    print $count_start . "<BR>";
}

     }

     if (!isset($_POST['Submit1']) || ($start == "Start Date" && $end == "End Date") || ($start == "" && $end == "End Date") || ($start == "Start Date" && $end == "")
|| ($start == "" && $end == "")) 

    {

print ("no data yet")."<BR>";
    }

    if ($year_start[2] > $year_end[2]){

print ("Please make sure end date Year is equal or greater than start date Year");
}

    if (($month_start > $month_end) && ($year_start <= $year_end)){

print ("Please make sure end date Month is greater than start date Month");

     }
     elseif (($month_start > $month_end) && ($year_start < $year_end)){

cuenta($count_start, $count_end);           
     }

    elseif ($count_start > $count_end) {
print ("Please make sure end date Day is greater than start date Day");

    }


    ?>

Я начинаю в php, извините, если я пропускаю очевидное !, [вот почему яsking haha] так что, если я пропускаю какую-то другую важную проверку для поиска между диапазонами дат, plz, дайте мне знать, а также plz, укажите мне лучшее направление для этого леса ifs!

спасибо большое!

1 Ответ

2 голосов
/ 09 июня 2011

Гораздо проще преобразовать даты в метки времени Unix, а затем сравнить целые числа.PHP имеет функцию strtotime для этой цели.Если у вас уже есть разбитые даты, вы можете использовать mktime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...