[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Несколько условий в одном If + date()
Joliat
Подскажите пожалуйста, можно ли прописать несколько условий в одних скобках if, чтоб не делать каскады из if`ов ?
И еще один вопрос по date():
Могу извлечь из sql информацию с датой и временем в формате "2011-09-16 19:56:52".
Каким образом можно прописать условие, при котором будет выполняться код, только если от полученного времени прошло не более 5 часов?



Спустя 7 минут, 27 секунд (16.09.2011 - 21:48) Игорь_Vasinsky написал(а):
1. switch->case
2. посмотреть примеры с работой функции date()

Спустя 2 минуты, 50 секунд (16.09.2011 - 21:50) Joliat написал(а):
По первому вопросу откопал:
<?php
if( ($a==1 || $a==2) && ($b==3 || $b==4) && ($c==5 || $c==6) ) {

}

?>

|| - означает "или"?

По второму пытаюсь вникнуть, а не как!
Прошу помощи, если не сложно!

Спустя 4 минуты, 6 секунд (16.09.2011 - 21:54) Игорь_Vasinsky написал(а):
|| или OR - да это условие "или"
http://www.spravkaweb.ru/php/datafun/datetime

Спустя 2 минуты, 14 секунд (16.09.2011 - 21:57) rooor написал(а):
По второму смотри в сторону DATE() и mktime()

Текущее время в формате 0000-00-00 00:00:00 можно получить вот так:
date("Y-m-d H:i:s");

И при помощи mktime можно отнять сколько угодно, хоть 5 часов, хоть 5 месяцев.

Если не так, не ругайте, я нуб в php, просто хотел помочь :D

Спустя 2 минуты, 15 секунд (16.09.2011 - 21:59) Игорь_Vasinsky написал(а):
давненько я подобными вопросами не задавался... нужно практиковать , эксперементировать, проверять и смотреть.

Спустя 7 минут, 56 секунд (16.09.2011 - 22:07) ИНСИ написал(а):
Цитата
только если от полученного времени прошло не более 5 часов?

если в sql хочешь отсортировать, то так:
SELECT * FROM `table` WHERE `date` > NOW() - INTERVAL 5 HOUR

если в php, то используй http://www.php.net/manual/ru/datetime.diff.php (работает в php 5 и выше)

Спустя 4 минуты, 59 секунд (16.09.2011 - 22:12) rooor написал(а):
Как вариант...

//Получаем текущую дату минус 5 часов
$date1=date("Y-m-d H:i:s", mktime(date("H")-5, date("i"), date("s"), date("m"), date("d"), date("Y")));

$sql=mysql_query("SELECT ... FROM ... ") ...;
while($res=mysql_fetch_assoc($sql)){
if ($res['date'] < $date1){
echo "Прошло больше 5-ти часов";
}
}


Спустя 3 минуты, 2 секунды (16.09.2011 - 22:15) Joliat написал(а):
давайте тогда приступим!)))
как я понимаю, мне нужно для сравнения времён, свести их к общему формату как сказал rooor.

вот такой код сейчас:
	echo $com_time=$pred_msg[0]->comment_date;
echo '<br/>';
echo $now_time=date("Y-m-d H:i:s");
echo '<br/>';

результат:
2011-09-16 06:35:35
2011-09-16 19:13:21

Как написать процедуру сравнения?

Спустя 11 минут, 56 секунд (16.09.2011 - 22:27) Joliat написал(а):
по способу rooor выдает ошибку Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given

Спустя 1 минута, 26 секунд (16.09.2011 - 22:28) Игорь_Vasinsky написал(а):
Цитата
$sql=mysql_query("SELECT ... FROM ... ") ...;

если запрос не этот - то какой у тя?

Спустя 11 минут, 3 секунды (16.09.2011 - 22:39) Joliat написал(а):
Все, вопрос решен!
вот нашел код, чуть подмастерил:
	echo $date1=$pred_msg[0]->comment_date;
echo '<br/>';
echo $date2=date("Y-m-d H:i:s");
echo '<br/>';
$arr1 = explode(" ", $date1);
$arr2 = explode(" ", $date2);
$arrdate1 = explode("-", $arr1[0]);
$arrdate2 = explode("-", $arr2[0]);
$arrtime1 = explode(":", $arr1[1]);
$arrtime2 = explode(":", $arr2[1]);
$timestamp2 = (mktime($arrtime2[0], $arrtime2[1], 0, $arrdate2[1], $arrdate2[0], $arrdate2[2]));
$timestamp1 = (mktime($arrtime1[0], $arrtime1[1], 0, $arrdate1[1], $arrdate1[0], $arrdate1[2]));
$difference = floor(($timestamp2 - $timestamp1)/3600);
echo 'Разница между датами: '.$difference.' часов';

вывод:
2011-09-16 06:35:35
2011-09-16 23:39:02
Разница между датами: 17 часов


Спустя 1 минута, 35 секунд (16.09.2011 - 22:41) Игорь_Vasinsky написал(а):
rolleyes.gif молодец

Спустя 11 часов, 16 минут, 4 секунды (17.09.2011 - 09:57) ИНСИ написал(а):
Можно так:
$date1 = new DateTime($cometDate);
$date2 = new DateTime("now");
$diff = $date1->diff($date2);

echo 'Разница в '.$diff->format('%h'); .' часов';


_____________
О-о-о-о-о-очень начинающий...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.