Условие ако таблицата не е ъпдейтвана през последните 3 часа

vinsbg

Registered
Здравейте,

Един малък проблем имам с проверка и условие, кога последно е ъпдейтната колона в базата данни.

Това, което искам е да проверя ако не е ъпдейтвана последните 3 часа.

Имам следното
Код:
	$q = "SELECT * FROM table WHERE update_time < (NOW() - INTERVAL 3 HOUR)";
	$res = mysqli_query($conn, $q);
		
	while($r = $res->fetch_assoc()) 
	{
		if($r > 0) {
			echo 'not updated';
			echo $r['update_time'];
		}
		else { 
		        echo 'updated'; 
		        echo $r['update_time'];
		}
		
	}
Не съм сигурен, че е коректно по този начин. Това, което се случва е, че ако последно е ъпдейтвано преди 3 часа ми показва echo 'not updated'; но ако е току що ъпдейтнато не ми показва else echo 'updated';
 
Fakeheal каза:
В какъв формат записваш датата си?
Забравих да спомена: timestamp ...

Дърпам едни данни от едно апи с крон на всеки 20мин. Сега си правя скрипта ако нещо се случи и крона спре да почне да дърпа директно от апи-то, докато базата се ъпдейтне наново.

Та реално проверявам датата ако е по-малко от 3 часа значи всичко е наред. Ако е повече от 3 часа, значи базата не е ъпдейтвана и да ползва директно апи-то.
 
Между другото работенето с дати е малко tricky, заради часовите зони.

Виж като напишеш:

Код:
SELECT NOW() as mysql_time_now,  (NOW() - INTERVAL 3 HOUR) as mysql_time_3_h_ago from `koqto_i_da_e_tablica`
Според MySQL какво е времето сега и преди 3 часа :)
 
Fakeheal каза:
Между другото работенето с дати е малко tricky, заради часовите зони.

Виж като напишеш:

Код:
SELECT NOW() as mysql_time_now,  (NOW() - INTERVAL 3 HOUR) as mysql_time_3_h_ago from `koqto_i_da_e_tablica`
Според MySQL какво е времето сега и преди 3 часа :)

Код:
mysql_time_now
2016-10-27 13:37:40


mysql_time_3_h_ago
2016-10-27 10:37:40

Струва ми се коректно
 
Ти искаш да избереш всички записи, които не са ъпдейтвани в последните 3 час?
Или искаш да вземеш всички записи в дб и да провериш дали са ъпдейтвани или не?

Не е много ясно.
 
Само един запис има в тази таблица и само той се ъпдейтва. Няма ID и т.н.

Колоните са 3 - sell, buy, update_time

Cron-a прави прост ъпдейт на трите полета. Целта е да видя дали последния ъпдейт на 'update_time' е повече от 3 часа и от там вече са условията if{}else{} според това дали е или не. В идеалния вариант крона си ъпдейтва на всеки 20мин, но винаги може нещо да стане и да спре...

Надявам се е малко по-ясно сега.
 
Но ти избираш записа като имаш условие и после правиш if ... else ...

Код:
$query = "SELECT * FROM table WHERE update_time < (NOW() - INTERVAL 3 HOUR)"; 
$result = mysqli_query($conn, $q); 

if($result->num_rows > 0) {
    echo 'not updated in the last 3 hours';
} else {
    echo 'updated in the last 3 hours';
}
 
Fakeheal каза:
Но ти избираш записа като имаш условие и после правиш if ... else ...

Код:
$query = "SELECT * FROM table WHERE update_time < (NOW() - INTERVAL 3 HOUR)"; 
$result = mysqli_query($conn, $q); 

if($result->num_rows > 0) {
    echo 'not updated in the last 3 hours';
} else {
    echo 'updated in the last 3 hours';
}
Знаех си, че е нещо дребно.. Благодаря :?:
 

Back
Горе