|
|
|
| &&&&&&&Эпиграф:&&&&&&&&&
Да ознаменует эта месага начало моего долгого но плодотворного изучения php...
&&&&&&&Сожаления:&&&&&&&&&
Да, как и положено надо извиниться за свою глупость, за отрывание важных людей от дел и т.д. ИЗВИНЯЮСЬ.....
&&&&&&&Вопрос на 5 копеек:&&&&&&&&&
есть оператор if, кот. может проверять даже 2 и более условия ...и есть код...
$date_m_start = 1;
$date_m_end = 1;
$date_d_start = 2;
$date_d_end = 1;
if ($date_m_start > $date_m_end and $date_d_start > $date_d_end)
// if ($date_g_start > $date_g_end )
exit('Хрен тебе, исправляй дату, назад во времени ходить нельзя');
не хитрый код..... направлен на исключение перекрёстной даты.......
Но. Oн не работает даже в таком виде. Не говоря о "прилетаемых" переменных $date_m_start .....
Опытным путём установлено что проверяется только первое условие в if....
В чём "фашисты нагадили" ?
;-)
Да. подзабыл сказать - юзаю денвер с 5 пхп
-Димитрий
Воронеж
PS Торжественно клянусь ньюмессить только если все мои 11 книг по вебу не помогут...... | |
|
|
|
|
|
|
|
для: venzh
(05.08.2006 в 10:40)
| | Потому что между условиями вы указали AND, а так как первое условие у вас не выполняется, то всегда будет false.
Вообщем вот исправленный код:
<?
$date_m_start = 1;
$date_m_end = 1;
$date_d_start = 2;
$date_d_end = 1;
if (($date_m_start > $date_m_end) or ($date_d_start > $date_d_end))
{
exit('Хрен тебе, исправляй дату, назад во времени ходить нельзя');
}
?>
|
| |
|
|
|
|
|
|
|
для: JIEXA
(05.08.2006 в 11:00)
| | ;-(
Печально но дажи так не работаит.
Вкладываю файлы.
И вообще как оптимально реализовать:
- проверку (исключение) перекрёстных дат
- (!!!!) посчитать количество дней (промежуток между датами) | |
|
|
|
|
|
|
|
для: venzh
(05.08.2006 в 11:19)
| | второй файл
ТАк как быть? | |
|
|
|
|
|
|
|
для: venzh
(05.08.2006 в 11:19)
| | А цель скрипта какая? Посчтитать количество дней между датами? | |
|
|
|
|
|
|
|
для: cheops
(05.08.2006 в 11:35)
| | ну да....
но до этого надо ведь проверьть ввведённые данные.... | |
|
|
|
|
|
|
|
для: venzh
(05.08.2006 в 11:39)
| | Давайте для начала второй файл перепишем так
<html>
<head>
<title> Тестовая страница </title>
</head>
<body bgcolor="#FAF9C5" >
<table border="1" >
<?php
if($_POST['date_m_start'] <= 0) exit("Не верный формат месяца для стартовой даты");
if($_POST['date_d_start'] <= 0) exit("Не верный формат дня для стартовой даты");
if($_POST['date_g_start'] <= 0) exit("Не верный формат года для стартовой даты");
if($_POST['date_m_end'] <= 0) exit("Не верный формат месяца для конечной даты");
if($_POST['date_d_end'] <= 0) exit("Не верный формат дня для конечной даты");
if($_POST['date_g_end'] <= 0) exit("Не верный формат года для конечной даты");
// Получив POST-переменные следует сформировать дату в
// формате UNIXSTAMP, т.е. в виде числа секунд, прошедших
// с 1 января 1970 года - их удобнее сравнивать
$start = mktime(0, 0, 0, $_POST['date_m_start'], $_POST['date_d_start'], $_POST['date_g_start']);
$end = mktime(0, 0, 0, $_POST['date_m_end'], $_POST['date_d_end'], $_POST['date_g_end']);
if ($start > $end) exit('Начало интервала позднее конца - так нельзя');
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.08.2006 в 11:50)
| | Большое СПС - буду скрипт совершенствовать направление задали, но.....
вопрос почему if с 2мя и более условиями у меня не работает?....
и вообще оно должно работать.... с т.з. документации... | |
|
|
|
|
|
|
|
для: venzh
(05.08.2006 в 12:11)
| | Ну а если вместо and и or использовать && и || соответственно? | |
|
|
|
|
|
|
|
для: koder
(05.08.2006 в 12:39)
| | да пробовал конечно... не фига..... выполняется только первое условие из многих.....
мне важно понять - это глюки только моего php или так в php делать нельзя..... а то наберусь ума, денвер снесу и поставлю нормальную связку апач пхп скюл | |
|
|
|
|
|
|
|
для: venzh
(05.08.2006 в 12:11)
| | >вопрос почему if с 2мя и более условиями у меня не работает?
Дело в том, что дата вещь линейная, каждый момент времени либо больше, либо меньше предыдущего момента времени, а когды мы сравниваем разные временные величны вроде месяцев, дней и годов просто одно условие не покатит... так как месяц одной даты может быть больше месяца другой даты, а день наоборот меньше. Лучше переводить дату в линейный формат, в секунды... собственно этот формат и был введён в программирование ради таких сравнений более 30 лет назад. | |
|
|
|