我使用以下代码向用户展示广告。一旦任何用户点击了一个添加,它就不会在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 )
{
但就我而言,这对我不起作用。
答案 0 :(得分: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
将日期字符串从数据库转换为毫秒数。之后,您已准备好计算差异。