Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Дата и условие if

Сообщения:  [1-10]   [11-11] 

 
 автор: cheops   (05.08.2006 в 23:38)   письмо автору
 
   для: venzh   (05.08.2006 в 12:11)
 

>вопрос почему if с 2мя и более условиями у меня не работает?
Дело в том, что дата вещь линейная, каждый момент времени либо больше, либо меньше предыдущего момента времени, а когды мы сравниваем разные временные величны вроде месяцев, дней и годов просто одно условие не покатит... так как месяц одной даты может быть больше месяца другой даты, а день наоборот меньше. Лучше переводить дату в линейный формат, в секунды... собственно этот формат и был введён в программирование ради таких сравнений более 30 лет назад.

   
 
 автор: venzh   (05.08.2006 в 12:52)   письмо автору
 
   для: koder   (05.08.2006 в 12:39)
 

да пробовал конечно... не фига..... выполняется только первое условие из многих.....
мне важно понять - это глюки только моего php или так в php делать нельзя..... а то наберусь ума, денвер снесу и поставлю нормальную связку апач пхп скюл

   
 
 автор: koder   (05.08.2006 в 12:39)   письмо автору
 
   для: venzh   (05.08.2006 в 12:11)
 

Ну а если вместо and и or использовать && и || соответственно?

   
 
 автор: venzh   (05.08.2006 в 12:11)   письмо автору
 
   для: cheops   (05.08.2006 в 11:50)
 

Большое СПС - буду скрипт совершенствовать направление задали, но.....
вопрос почему if с 2мя и более условиями у меня не работает?....
и вообще оно должно работать.... с т.з. документации...

   
 
 автор: cheops   (05.08.2006 в 11:50)   письмо автору
 
   для: 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(000$_POST['date_m_start'], $_POST['date_d_start'], $_POST['date_g_start']);
  
$end mktime(000$_POST['date_m_end'], $_POST['date_d_end'], $_POST['date_g_end']);

  if (
$start $end) exit('Начало интервала позднее конца - так нельзя'); 
?>


</body>
</html>

   
 
 автор: venzh   (05.08.2006 в 11:39)   письмо автору
 
   для: cheops   (05.08.2006 в 11:35)
 

ну да....
но до этого надо ведь проверьть ввведённые данные....

   
 
 автор: cheops   (05.08.2006 в 11:35)   письмо автору
 
   для: venzh   (05.08.2006 в 11:19)
 

А цель скрипта какая? Посчтитать количество дней между датами?

   
 
 автор: venzh   (05.08.2006 в 11:19)   письмо автору
 
   для: venzh   (05.08.2006 в 11:19)
 

второй файл

ТАк как быть?

   
 
 автор: venzh   (05.08.2006 в 11:19)   письмо автору
 
   для: JIEXA   (05.08.2006 в 11:00)
 

;-(
Печально но дажи так не работаит.
Вкладываю файлы.
И вообще как оптимально реализовать:
- проверку (исключение) перекрёстных дат
- (!!!!) посчитать количество дней (промежуток между датами)

   
 
 автор: JIEXA   (05.08.2006 в 11:00)   письмо автору
 
   для: 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(
'Хрен тебе, исправляй дату, назад во времени ходить нельзя');
}
?>

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования