2012-04-30 68 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登錄的情況下,不需要這樣的答案。這是我所知道的一切。