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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: сравнивание даты с датой
 
 автор: krot   (27.02.2006 в 22:05)   письмо автору
 
 

здраствуйте коллеги! подскажите как мне сравнить 2 перемынные с датами, какая больше/меньше.
вообщем мне нужно выводить из скульной базы только тех преподавателей, которые поступили на работу с 20.01.2005 по 12.04.2005 (это пример). то есть нужно сравнивать дату с датой.
конкретно предназначенных для этого функций я не нашел, а может плохо искал.
подскажите плиз! зараннее благодарен!

З.Ы. не переносите раздел, мне нужно сравнить 2 переменные с датами средствами ПХП!!!!!!

   
 
 автор: chocopie   (27.02.2006 в 22:38)   письмо автору
 
   для: krot   (27.02.2006 в 22:05)
 

А в каком виде у Вас хранится дата в базе?

   
 
 автор: cheops   (28.02.2006 в 00:21)   письмо автору
 
   для: krot   (27.02.2006 в 22:05)
 

А почему именно средствами PHP, ведь в MySQL это гораздо удобнее сделать?

   
 
 автор: krot   (28.02.2006 в 01:29)   письмо автору
 
   для: cheops   (28.02.2006 в 00:21)
 

эээээээ........ нуууу..... да же не знаю, что сказать. просто у меня человек должен вводить в форму 2 даты и после нажатия батона, из базы должны выводиться все преподаватели, устроившиеся на работу в промежутке времени - между двумя датами, например с 10.02.2005($data1) по 12.04.2005($data2).
вот.
данные хранятся в базе ввиде строки "10.01.1986"
а как реализовывать ето, средствами пхп или скул мне безразници, но помоему в пхп нет такой функции сравнения дат или есть, но я о её существовании не заняю..... короче помогите люди добрые. гыгы

З.Ы. тока не переносите тему в скул раздел

   
 
 автор: cheops   (28.02.2006 в 13:00)   письмо автору
 
   для: krot   (28.02.2006 в 01:29)
 

А как это видится - вы извлекаете все записи и потом их фильтруете средствами PHP или сразу извлекаете из базы данных необходимые вам записи из временного интервала?

   
 
 автор: krot   (28.02.2006 в 13:54)   письмо автору
 
   для: cheops   (28.02.2006 в 13:00)
 

я никак ещё я не извлекаю. но если можно извлечёные данные отфильтровать, то я согласен. да и 2-й спрособ (извлекать из бызы тех, которые входят в промежуток времени) тоже подойдёт. мне безразници каким способом это сделать, лижбы выводились записи тех преподователей, которые поступили на работу в указанный промежуток времени.

   
 
 автор: krot   (28.02.2006 в 12:10)   письмо автору
 
   для: cheops   (28.02.2006 в 00:21)
 

ну чё никто не знает как ето замутить?
cheops, где ты, спасай!

   
 
 автор: Loki   (28.02.2006 в 12:40)   письмо автору
 
   для: krot   (28.02.2006 в 12:10)
 

с помощью explode разбить на части и пропустив через mktime получить время в секундах. Сравнивать просто как числа.

   
 
 автор: krot   (28.02.2006 в 13:57)   письмо автору
 
   для: Loki   (28.02.2006 в 12:40)
 

mktime() из разбитой строки exploed-ом вида "10.01.1986" - формат (d.m.y) сделает мне число в секундах? помоему это не подходит по логике...
приведи пример (код) сравнивания дат.

   
 
 автор: Loki   (28.02.2006 в 14:13)   письмо автору
 
   для: krot   (28.02.2006 в 13:57)
 

<?
function new_date($date)
{
 
$tmp=explode("."$date);
 return 
mktime(000$tmp[2], $tmp[1], $tmp[3]);
}
$date1="10.01.1986";
$date2="25.02.1986";
if (
new_date($date1)>new_date($date2))
echo 
"$date1>$date2";
else
echo 
"$date1<$date2";
?>

   
 
 автор: krot   (28.02.2006 в 23:36)   письмо автору
 
   для: Loki   (28.02.2006 в 14:13)
 

помоему етот код не работает, выводит -
Warning: mktime(): Windows does not support negative values for this function in C:\Program Files\PHP Expert Editor\phpA.tmp on line 6
люди а есть ещё варианты?

   
 
 автор: cheops   (01.03.2006 в 00:10)   письмо автору
 
   для: krot   (28.02.2006 в 23:36)
 

Хм... а откуда у вас там отрицательные значения, что предаётся через $date?

   
 
 автор: Loki   (01.03.2006 в 00:19)   письмо автору
 
   для: krot   (28.02.2006 в 23:36)
 

Это моя ошибка. индексы массива начинаются с нуля. Должно быть так:

return mktime(0, 0, 0, $tmp[1], $tmp[0], $tmp[2]); 

   
 
 автор: krot   (28.02.2006 в 23:38)   письмо автору
 
   для: Loki   (28.02.2006 в 14:13)
 

наверное он работает в юникс-подобных системах, а уменя видоус

   
 
 автор: Drago   (01.03.2006 в 00:18)   письмо автору
 
   для: krot   (28.02.2006 в 23:38)
 

Вот так будет работать.

<? 
function new_date($date

$tmp=explode("."$date); 
return 
mktime(000$tmp[1], $tmp[0], $tmp[2]);

$date1="10.01.1986"
$date2="25.02.1986"
if (
new_date($date1)>new_date($date2)) 
echo 
"$date1>$date2"
else 
echo 
"$date1<$date2"
?>

Массивы... все у них не как у людей. :)))

   
 
 автор: krot   (01.03.2006 в 10:27)   письмо автору
 
   для: Drago   (01.03.2006 в 00:18)
 

люди подскадите
вот проверка на пральность ввода даиы
if(ereg("([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})", $data1) && ereg("([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})", $data2))
{
echo("ok");
} else{
echo("не ok");
}
и когда я ввожу в поле вот ету дату 123.10.2006, то выводится ОК
что не так?

   
 
 автор: krot   (01.03.2006 в 17:06)   письмо автору
 
   для: Drago   (01.03.2006 в 00:18)
 

ну кто поможет?

   
Rambler's Top100
вверх

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