2012-04-30 69 views
2

我有一个数据库,完整的PHP time();时英寸计算最大登录每天

用户登录我知道我应该已经创建了自己的用户名的值,并更新了登录计数存储,而是我有一个数据库完整的PHP time();与他们username

这是我如何找到登录的个人用户数量:

<?php 
function to_date($timestamp) { 
    return date('Y-m-d', $timestamp); 
} 
$days = array(); 
$occurences = array(); 
$zero = array(); 
$query = mysql_query("SELECT `login_time` FROM `stats` WHERE `userid`='$someuserid' ORDER BY `login_time` ASC"); 
while($rows = mysql_fetch_array($query)) { 
    $days[] = to_date($rows['login_time']); 
} 
$days[] = to_date(time()); 
$occurences = array_count_values($days); 
$days = array_unique($days); 
sort($days); 
for($i = 0; $i < count($days); $i++) { 
    $difference = isset($days[$i+1]) ? strtotime($days[$i+1]) - strtotime($days[$i]) : 0; 
    if($difference > 86400) { 
     $difference = ceil(abs($difference/86400)); 
     $fill = $days[$i]; 
     for($k = 0; $k < $difference-1; $k++) { 
     $fill += strtotime('+1 day', strtotime($fill)); 
      $zero[] = to_date($fill); 
     } 
    } 
} 
echo "["; 
for($i = 0; $i < count($zero); $i++) { 
    echo "[\"".$zero[$i]."\",0], "; 
} 
for($i = 0; $i < count($occurences); $i++) { 
    if($i == count($occurences)-1) 
     echo "[\"".$days[$i]."\",".($occurences[$days[$i]]-1)."]"; 
    else { 
     echo "[\"".$days[$i]."\",".$occurences[$days[$i]]."], "; 
    } 
} 
echo "]"; 
?> 

我怎么能将此的所有用户,并找出谁最的记录每天在数据库中?输出是为jqplot编码的。

回答

2
SELECT 
    userid, 
    DATE(FROM_UNIXTIME(login_time-MOD(login_time,86400)+1)) as logindate, 
    count(*) as logincount 
FROM stats 
GROUP BY userid, logindate 

使用上面的查询可以直接从数据库中获取所有所需数据,这将帮助你避免做后期处理使用PHP

此外,如果你想获得一个记录,有最大的登录的(任何)天,使用下面的查询与添加的SQL包装以上查询:

SELECT * FROM (
    SELECT 
     userid, 
     DATE(FROM_UNIXTIME(login_time-MOD(login_time,86400)+1)) as logindate, 
     count(*) as logincount 
    FROM stats 
    GROUP BY userid, logindate 
) tmptable 
ORDER BY logincount DESC, logindate DESC LIMIT 1 

让我知道这是否帮助你。

+1

哇。这太令人印象深刻了。非常感谢你,我从来不知道mysql可以做到这一点。谢谢!!你为我节省了很多时间! – user521903

0

选择userid,COUNT(用户ID)从stats GROUP“login_count” BY userid

0

所有的答案可能是正确的或不正确的。但我知道一件事,我的答案是不正确的。但在Max登录的情况下,不需要这样的答案。这是我所知道的一切。