我在用户登录时存储了一个充满php time();
的数据库。
我知道我应该为他们的用户名创建一个值并更新登录计数但是我的数据库中装满了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。
答案 0 :(得分: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 :(得分:0)
SELECT userid
,COUNT(userid)AS'login_count'FROM stats
GROUP BY userid
答案 2 :(得分:0)
所有答案可能都是正确或不正确的。但我知道有一点我的答案是不正确的。但是在Max登录的情况下,不需要这样的答案。这就是我所知道的。