gpt4 book ai didi

php - MySQL 访问者/命中计数器排序统计

转载 作者:行者123 更新时间:2023-11-29 02:28:09 24 4
gpt4 key购买 nike

我正在为我的网站构建一个访问者和点击率计数器,当然,访问者每天是一个唯一的 ip,点击率是每次请求页面时!

我已经创建了数据库和系统来插入和更新我保存统计信息的表!

我正在苦苦挣扎的是,如何对日期进行排序然后显示它。好吧,我知道我想如何显示它,但我需要它正确排序,并且查询量最少

首先这是我的表结构,当前表名"testing_statistics"

url  - varchar(256)
ip - int(11)
date - datetime

我不知道这是否是 100% 最好的方式,但这就是我目前存储它的方式,如果你们有更好的想法,请随时告诉我。 ip 被转换为 long though PHP,因此它可以存储为整数

然后我想要所有今天的点击率和访问者、所有昨天的点击率和访问者、所有当月的点击率和访问者以及最后的总点击率和访问者!

这是我想要得到的图像

我知道如何使用 CSS 进行布局,这只是从数据库中排序/获取数据。


这就是我目前获取每个 url 的总点击量的方式。

$query = "SELECT `url`, COUNT(*) as `hits` FROM `testing_statistics` GROUP BY `url`";

这就是我目前如何获得每个网址今天的点击量。

$query = "SELECT `url`, COUNT(*) as `count2` FROM `testing_statistics` WHERE DATE(`date`) = CURDATE() GROUP BY `url`";

我真的不知道如何获得其余部分,以及如何获得每个网址的总访问者。所以这就是我需要一些帮助以及如何将它们放在一起,这样我就不会为每个进程创建一个查询(尽管如果不可能,我可以忍受每次都创建一个新查询)


如果有人能帮助我,我真的很感激,即使只是一些事情!查询越少越好。 (虽然真的没关系)

最佳答案

要获得访问者总数,您可以使用count(distinct ip)。查询看起来像:

SELECT `url`, COUNT(*) as `hits`, count(distinct ip) as visitors
FROM `testing_statistics`
GROUP BY `url`

和:

SELECT `url`, COUNT(*) as `count2`, count(distinct ip) as visitors
FROM `testing_statistics`
WHERE DATE(`date`) = CURDATE()
GROUP BY `url`

实际上,您可以使用条件聚合在一个查询中同时执行这两项操作:

SELECT `url`, COUNT(*) as `hits`, count(distinct ip) as visitors,
sum(case when DATE(`date`) = CURDATE() then 1 else 0 end) as TodayHits,
count(distinct case when DATE(`date`) = CURDATE() then ip end) as TodayVisitors
FROM `testing_statistics`
GROUP BY `url`

关于php - MySQL 访问者/命中计数器排序统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com