PHP — выбор определенного количества дат вокруг даты, на основе пользовательского ввода

#php #mysql

#php #mysql

Вопрос:

Я создал систему бронирования отелей и пытаюсь добавить опцию проживания на несколько ночей. По сути, если отель решит использовать эту опцию для указанных дат, гости, бронирующие бронирование на эти даты, должны будут забронировать определенное количество ночей, которое требуется отелю. Например, если 01/01/2011 требуется проживание на 3 ночи, гостям, бронирующим 01/01/2011, потребуется проживать не менее 3 ночей за раз, а гостям, бронирующим 01/02/2011, придется проживать не менее 2 ночей за раз.

Я разработал код для этого, если вы просто переходите вперед от даты, но он также должен идти назад, так как пребывание на 31.12.2010 также соответствует требованию, и у меня возникают проблемы с разработкой этого. Ниже приведен мой текущий HTML-код:

 <form action='aaa' method='post' id='aaa'>
<h3>Minimum Stay Option</h3>
On <input type='text' size='15' maxlength='10' id='m' name='m' /> guests must stay minimum of <input type='text' size='10' maxlength='2' id='mn' name='mn' />* nights 
<input type='submit' class='button' value='Update' /><br /><br />
<span style='font-size:12px; font-style:italic'>*If you wish to remove a minimum stay requirement, please enter each date for which there is a minimum stay requirement and enter "1" into the nights field.</span><br />
</form>
  

и php-код:

 if(isset($_POST['m']) amp;amp;
isset($_POST['mn']))

{
$d = $_POST['m'];
$m = strtotime($d);
$mn = $_POST['mn'];
$max_date = $m   (($mn - 1) * 86400);

if ($mn == 0) echo "<div class='rates3'><span style='color:red'>The number of nights inputed must be greater than 0.</span></div>";
elseif ($mn == 1) 
{
    for ($m; $m <= $max_date; $m  = 86400) 
    {
        $date = date('m/d/Y', $m);
        $table = 'foobar';
        $query = "INSERT INTO $table(d, min) VALUES('$date', '') ON DUPLICATE KEY UPDATE min=''";
        mysql_query($query);
    }

    echo "<div class='rates3'><span style='color:red'>You removed the minimum stay requirement for $d.  Guests booking on that date will no longer have to stay more than one night.</span></div>";
}
else
{
    for ($m; $m < $max_date; $m  = 86400) 
    {
        $date = date('m/d/Y', $m);
        $table = 'foobar';
        $query = "INSERT INTO $table(d, min) VALUES('$date', '1') ON DUPLICATE KEY UPDATE min='1'";
        mysql_query($query);
    }

    echo "<div class='rates3'><span style='color:red'>You created a $mn nights minimum stay requirement on $md.  Guests booking on $d will have to stay a minimum of $mn nights.</span></div><br />";
}
 }
  

Комментарии:

1. Я надеюсь, что первая форма находится на странице администратора. Представление минимального требования к пребыванию в редактируемом поле на странице пользователя просто позволит им манипулировать требованиями.

2. Все это находится на странице администратора (т.Е. На странице отеля). Я не включил гостевую страницу, потому что это основное, и мне не нужна помощь в этом. Тем не менее, спасибо за ваш комментарий.

3. Просто используйте DateTime — это очень упрощает вашу жизнь: $date = new DateTime("2012-08-07"); $date->modify("-2 days"); теперь у вас есть дата за два дня до (и так далее ..) DateTime::modify