| |
|
|
| | Ребята, как бы мне избавиться от вывода такого:
Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in z:\home\localhost\www\admin\datecheckA.php on line 15
Вот код:
PS. Мне помогал Trianon. С тех пор я что-то поменяла. Да, register globals=off !!!
<?php
$prDay=date('d');
$prMonth=date('m');
$prYear=date('Y');
$curentDate=date('m/d/Y');
function cvt($ds)
{
if(!is_string($ds))
return false;
$tri = explode('/',$ds);
if(count($tri) != 3)
return false;
$tm = mktime(0,0,0,$tri[0], $tri[1], $tri[2]);
$dt = date("m/d/Y", $tm);
if($dt != $ds)
return false;
return $tm;
}
$days = 1; // days to count
$prev = $_POST['datea']; // previous date
$prev_tm = cvt($prev); // the prev date mark
$next_tm = $prev_tm + 3600*24*$days ; // the future date mark
if($days) $next_tm += (($days > 0)? 3 :(-3)) * 3600; // summer/winter correction
$next = date("m/d/Y", $next_tm); // the next date
if (empty($_SESSION['datea']) || ($_SESSION['datea']<$curentDate))
$_SESSION['datea']=$curentDate;
if (empty($_SESSION['dated']) && !empty($_SESSION['datea'])|| ($_SESSION['dated']<$_SESSION['datea']))
$_SESSION['dated']=date("m/d/Y",cvt($_SESSION['datea']) + 3600*27);
// if ($_SESSION['datea'] < $curentDate)
// $_SESSION['datea']=$curentDate;
// if ($_SESSION['dated']<$_SESSION['datea'])
// $_SESSION['dated']=date("m/d/Y",cvt($_SESSION['datea']) + 3600*27);
if(isset($_POST['datea']) && isset($_POST['dated']))
{
$datea = htmlspecialchars($_SESSION['datea']); $d1 = cvt($datea);
$dated = htmlspecialchars($_SESSION['dated']); $d2 = cvt($dated);
// if((false === $d1)||(false === $d2))
if((false === $d1)||(false===$d2)){
$_SESSION['datea']=date('m/d/Y');
$_SESSION['dated']=date("m/d/Y",cvt($_SESSION['datea']) + 3600*27);
// if(($d1<date('m/d/Y'))OR($d2<$d1))
if($d2<$d1)
$_SESSION['dated']=date("m/d/Y",cvt($_SESSION['datea']) + 3600*27);
echo("<div id=msg-error><img src=../images/icons/attantion.jpg width=18 height=16 />
<p>Dates You have entered did not respond.</p>
<ul><li><a>The system has set your travel dates to the default.</a></a></li>
<li><a>If you wish to request rates and availability for other dates,
please, set your travel dates from the calendar only.</a></li>
</ul>
</div>");
}
$diff = intval(($_SESSION['dated'] - $_SESSION['datea']+3600*3)/86400);
if (($diff > 90))
echo("<div id=msg-error><img src=../images/icons/attantion.jpg width=18 height=16 />
<p>Attantion. The length of each stay cannot be more than 90 consecutive nights.</p>
<ul>
<li><a>You have requested rates and availability for a continuous stay lasting more than
90 nights. Please, change your travel dates to less than 90 nights.</li>
<li>If you want to reserve more than 90 consecutive nights, please, contact us. To view our list
of contact information, please, click here.</li>
<li>To reach us electronically, click here.</a></li>
</ul>
</div>");
// If dates are fine - showing the results for needed hotels!
if ($diff<=90)//true == $d1 && true == $d2 && $diff<=90
require_once "searcher.php";
}
else { }
?>
|
Если тут что-то не так, простите, учимся!!
Спасибо. | |
| |
|
|
| |
|
|
| |
для: sasch
(06.06.2006 в 23:26)
| | | У вас судя по всему массив $tri нули содержит... выведите его дамп - перед строкой
<?php
echo "<pre>";
print_r($tri);
echo "</pre>";
$tm = mktime(0,0,0,$tri[0], $tri[1], $tri[2]);
?>
|
Что в нём? | |
| |
|
|
| |
|
|
| |
для: cheops
(07.06.2006 в 01:13)
| | | Если я вас правильно поняла, то
<?php
echo "<pre>";
print_r($tri);
echo "</pre>";
$tm = mktime(0,0,0,$tri[0], $tri[1], $tri[2]);
echo "$tm";
?>
|
выводит -1
Что делать? | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 09:15)
| | | Я видимо нашла решение этой проблеме, вот только еще не знаю правильно ли...
$curentDate=date('m/d/Y');
if (empty($tri) || ($tri<$curentDate))
$tri=$curentDate;
function cvt($ds)
{
if(!is_string($ds))
return false;
$tri = explode('/',$ds);
if(count($tri) != 3)
return false;
$tm = mktime(0,0,0,$tri[0], $tri[1], $tri[2]);
$dt = date("m/d/Y", $tm);
if($dt != $ds)
return false;
return $tm;
}
|
Теперь, пока, ошибка не появляется..
Такое решение является допустимым? Спасибо. | |
| |
|
|
| |
|
|
| |
для: sasch
(06.06.2006 в 23:26)
| | | Вы бы описали задачу более подробно. Как то:
Имеется форма из следующих полей. Хочу, чтобы она заполнялась так-то и так-то. Хочу, чтобы данные, которые в ней вводятся, проверялись и обрабатывались так-то и так-то.
Сейчас форму выводит следующий скрипт
...
, а обработкой данных из формы занимается следующий. | |
| |
|
|
| |
 21 Кб |
|
| |
для: Trianon
(07.06.2006 в 10:01)
| | | 1. Из формы №1 (см. рис. 1) посылается запрос. Вся введенная клиентом информация должна проверяться перед выводом инфор. на другой странице (рис №2). Камнем преткновения, для меня, явилось проверка дат (остальным еще не занималась). Я подумала и решила, что многократный вывод ошибки может раздрожать клиентов сайта и сделала вот что: если даты вводятся с ошибками, то вместо них подставляются the default dates, но выводится сообщение об этом факте дабы если клиент хотел поставить другие даты, но ошибся..
И вот вдруг находится такой умник который вводит в поля дат все что ему приходит на ум и скрипт выводит ту надпись что в начале темы. Некрасиво! Вот я и обратилась с просьбой о помощи... | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 10:26)
| | | После того как я прописала
...
if (empty($tri) || ($tri<$curentDate))
$tri=$curentDate;
function cvt($ds)
{
if(!is_string($ds))
...
|
вывода ошибки пока не видела, но не знаю правильно ли так как я сделала. Если можно исправте , покажите как надо, или намекните я подумаю. Спасибо.. | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 10:33)
| | | Я предлагал Вам исправленную функцию, которая проверяет вводимые данные без ошибок.
Вот эту:
function cvt($ds)
{
if(!is_string($ds))
return false;
$tri = explode('/',$ds);
if(count($tri) != 3)
return false;
list($m, $d, $y) = $tri;
if(!is_integer($m) || !is_integer($d) || !is_integer($y) )
return false;
$m = intval($m); $d = intval($d); $y = intval($y);
if($m < 1|| $m > 12 || $d < 1 || $d > 31 || $y < 1970 || $y > 2030)
return false;
$tm = mktime(0,0,0,$m, $d, $y);
$dt = date("m/d/Y", $tm);
if($dt != $ds)
return false;
return $tm;
}
|
Но Вы почему-то от нее отказались.
Очень советую вернуться к ней. | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 10:26)
| | | А код скриптов-то где?
И что, в конечном итоге, должно происходить с датами? После того, как они проверены. | |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 10:37)
| | | А да простите. Скрипт 1 (see attached) | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 10:46)
| | | Скрипт 2 (see attached) | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 10:46)
| | | там rtf-файлы. | |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 11:03)
| | | там rtf-файлы. Так нельзя? Я не знала.. | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 11:08)
| | | Можно. Только проще было прямо results.php прикрепить.
Хуже другое. Там часть отсутствует. Буквально в первой строке видим:
if (empty($_POST['datea']) || ($_POST['datea']<$curentDate))
|
откуда берется это $curentDate? | |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 11:18)
| | | Из начала первого скрипта... 5-ая строка
$curentDate=date('m/d/Y');
|
| |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 11:22)
| | | Вот начало первого скрипта: из rtf-файла Вашего сообщения (sash 07.06.2006 в 10:46)
<?php ...
if (empty($_POST['datea']) || ($_POST['datea']<$curentDate))
$_POST['datea']=$curentDate;
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 11:26)
| | | Посмотрите пожалуйста .txt файл, что я переслала следом | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 11:35)
| | | А во втором файле, тако впечатление, что все $_POST скопом заменены на $_SESSION.
И это при том, что механизм сессий не запущен. | |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 11:48)
| | | Да вы правы session_start() не видно т.к. эти файлы прикреплены by require_once... | |
| |
|
|
| |
|
|
| |
для: sasch
(07.06.2006 в 12:00)
| | | первый Ваш файл я слегка перетряс, чтобы его можно было без зубной боли читать и понимать:
<?php
function cvt($ds)
{
if(!is_string($ds))
return false;
$tri = explode('/',$ds);
if(count($tri) != 3)
return false;
list($m, $d, $y) = $tri;
$m = intval($m); $d = intval($d); $y = intval($y);
if($m < 1|| $m > 12 || $d < 1 || $d > 31 || $y < 1970 || $y > 2030)
return false;
$tm = mktime(0,0,0,$m, $d, $y);
$dt = date("m/d/Y", $tm);
if($dt != $ds)
return false;
return $tm;
}
$curentDate=date('m/d/Y');
// переносим в переменные данные из следующих полей формы:
foreach(
array('city', 'location', 'status', 'adults', 'kids', 'rooms', 'datea', 'dated')
as $varname)
$$varname = isset($_POST[$varname]) ? $_POST[$varname] : '';
if($datea == '') // если первая дата не задана - ставим текущую.
$datea = date('m/d/Y');
if($dated == '') // если вторая дата не задана - ставим на день позже.первая дата не задана - ставим текущую.
$dated = date('m/d/Y', cvt($datea)+3600*26);
?>
<div id="pod">
<form name="reserve" action="results.php" method="POST">
<div class="label-top-with-util">
<label for="city">Select a city:</label></div>
<select name="city" style="width:168px;">
<option value="0" >Select city</option>
<option value="moscow"<?php if($city=='moscow') echo "selected"; ?>>Moscow City</option>
<option value="stpeter"<?php if($city=='stpeter') echo "selected"; ?>>St. Petersburg</option>
</select>
<br>
<label for="location">Select a location:</label>
<br>
<select name="location" style="width:168px">
<option value="0" >Select Location</option>
<option value="dt"<?php if($location=='dt') echo "selected"; ?>>City - Downtown</option>
<option value="dt2"<?php if($location=='dt2') echo "selected"; ?>>City - Within 2 miles</option>
<option value="dt3"<?php if($location=='dt3') echo "selected"; ?>>City - Within 3 miles</option>
<option value="dt4"<?php if($location=='dt4') echo "selected"; ?>>City - Within 4 miles and more</option>
<option value="apt"<?php if($location=='apt') echo "selected"; ?>>Near Airports</option>
</select>
<br>
<label for="status">Select a hotel status:</label>
<br>
<select name="status" style="width:168px;">
<option value="0" >Select Hotel Status</option>
<option value="5"<?php if($status==5) echo "selected"; ?>>Five Star Hotel</option>
<option value="4"<?php if($status==4) echo "selected"; ?>>Four Star Hotel</option>
<option value="3"<?php if($status==3) echo "selected"; ?>>Three Star Hotel</option>
</select>
<br>
<div class="dateselect">
<div class="ADULTS">
<label for="rumnum">Adults:</label>
<br>
<select class="smallsellect" name="adults">
<option value="1"<?php if($adults=='1') echo "selected"; ?>>1</option>
<option value="2"<?php if($adults=='2') echo "selected"; ?>>2</option>
<option value="3"<?php if($adults=='3') echo "selected"; ?>>3</option>
</select>
<br>
<!-- <label class="label-description" for="adults">per room</label> -->
</div>
<br>
<div class="KIDS">
<label for="kids">Kids:</label>
<br>
<select class="smallsellect" name="kids">
<option value="0"<?php if($kids=='0') echo "selected"; ?>>0</option>
<option value="1"<?php if($kids=='1') echo "selected"; ?>>1</option>
<option value="2"<?php if($kids=='2') echo "selected"; ?>>2</option>
<option value="3"<?php if($kids=='3') echo "selected"; ?>>3</option>
</select>
<br>
<!-- <label class="label-description" for="kids">per room</label> -->
</div>
<br>
<div class="ROOM">
<label for="rooms">Rooms:</label>
<br>
<select class="smallsellect" name="rumnum">
<option value="1"<?php if($rooms=='1') echo "selected"; ?>>1</option>
<!-- <option value="2"<?php if($rooms=='2') echo "selected"; ?>>2</option>
<option value="3"<?php if($rooms=='3') echo "selected"; ?>>3</option>
-->
</select>
<br>
</div>
<label for="status">Select check-in date:</label>
<br>
<input class="date" name="datea" value="<?php echo $datea; ?>"><a href="javascript:void(0)" onclick="if(self.gfPop)gfPop.fStartPop(document.reserve.datea,document.reserve.dated);return false;" HIDEFOCUS><img class="PopcalTrigger" align="absmiddle" src="../private/cal/cal.gif" width="20" height="16" border="0" alt=""></a>
<br>
<label for="status">Select check-out date:</label>
<br>
<input class="date" name="dated" value="<?php echo $dated; ?>"><a href="javascript:void(0)" onclick="if(self.gfPop)gfPop.fEndPop(document.reserve.datea,document.reserve.dated);return false;" HIDEFOCUS><img class="PopcalTrigger" align="absmiddle" src="../private/cal/cal.gif" width="20" height="16" border="0" alt=""></a>
</div>
<div class="go-button">
<input class="submit go-button" type="submit" name="go" value="Check Availability">
<input type=hidden name=search value=search>
</div>
<!-- <div class=hr></div>-->
</form>
</div>
|
| |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 12:34)
| | | а со вторым что делать - не знаю. Потому что логика, по которой они комбинируются, друг друга запускают, и обмениваются данными, до меня не доходит.
В любом случае, функцию пересчета времени я исправил. Простите еще раз, что не посмотрел сразу. | |
| |
|
|
| |
|
|
| |
для: Trianon
(07.06.2006 в 12:58)
| | | Да что вы извиняетесь, если бы не вы то я все еще думала над этим. А работают они так:
Первый скрипт самастоятелен. В него не поступает ни какой информации. Когда человек заходит на строницу он показывает defualt dates. Человек задает параметры по которым следует вести поиск и передает эти параметры другому, второму скрипту. Тот, в свою очередь, производит проверку посланных данных и если все ок, то разрешает вывести искомый запрос.
Если даты заданы неверно он меняет их на default dates, если разница $d2-$d1 больше 90, выводит сообщение. | |
| |
|
|