2014-08-06 2 views
1

Я использую следующий код, чтобы показывать рекламу своим пользователям. Как только любой пользователь нажал на одно добавление, он не должен появляться одному и тому же пользователю в течение 24 часов.Как рассчитать количество часов между двумя точками во времени?

$sql2=$Db1->query("SELECT * FROM ads2 WHERE active='1' ORDER BY RAND()"); 

while($temp=$Db1->fetch_array($sql2)) { 

    $sql=$Db1->query("SELECT * FROM ads2_log WHERE user='$username' AND target='{ 
     $temp['target']}' AND shorten='{$temp['shorten']}' ORDER BY fecha DESC"); 
    $row=$Db1->fetch_array($sql); 
    $showads = true; 

    if($row['fecha'] != ""){ 

     $hourdiff = round(($row['fecha'] - time())/3600, 1); 
     //echo "Last click: ".date("Y/m/d H:i:s", $row['fecha'])." - ".$hourdiff; 
     if($hourdiff < 24) { $showads = false; } 

    } 
    if($showads == true) 
    { 

Но в моем случае это не работает для меня.

+3

Попробуйте отладить код и обновите свой вопрос с помощью результатов отладки. [Также] (http://stackoverflow.com/a/60496/2898694). А также используйте правильное имя для темы: когда я щелкнул ее, я подумал, что вам нужно рассчитать время загрузки страницы или smth, как это. –

+2

Каким образом конкретно он не работает? Что происходит? –

+0

@SharikovVladislav, я изменил название темы - – Neha

ответ

0

Предположим, что столбец базы данных, на который ссылается fecha, содержит последовательность символов DATETIME в следующей форме (используется MySQL): YYYY-MM-DD hh:mm:ss. В этом случае вы можете рассчитать разницу во времени между текущим временем и временем, хранящейся в базе данных следующим образом:

$hourdiff = round((time()-strtotime($row['fecha']))/3600, 1); 

PHP time() функция возвращает количество миллисекунд, прошедших с начала эпохи Unix (January 1 1970 00:00:00 UTC) , поэтому вам нужно использовать strtotime для преобразования строки даты из базы данных в несколько миллисекунд. После этого вы готовы вычислить разницу.

+0

ОК, я проверю это и напишу обновление здесь .. для получения дополнительных предложений – Neha

+0

У меня есть еще одно предложение. I.e Рекламные объявления снова появляются снова в 00:00 по времени сервера. Когда они будут нажаты. они должны исчезнуть и снова появиться в 00.00 .. спасибо за помощь – Neha

Смежные вопросы