我试图找出一个人的观点在一周内增加了多少。
我正在使用的列看起来像这样。
检索和显示此数据的代码
<?php
$query = "SELECT post_title, post_date, post_views_count FROM posts
WHERE post_user = '{$username}' AND post_status = 'published' ORDER
BY post_views_count DESC LIMIT 8";
$select_views = mysqli_query($connection, $query);
while ($row = mysqli_fetch_assoc($select_views)) {
$post_title = escape($row['post_title']);
$post_date = escape($row['post_date']);
$post_views_count = escape($row['post_views_count']);
echo $post_title . ' / ' . $post_views_count . ' / ' . $post_date .
'<br><br>';
}
?>
返回看起来像这样的数据
现在我怎样才能找到post_views_count在过去7天内增加的差异?
我理想地试图回应“你的帖子本周有55个以上的观点”这样的内容
非常感谢任何方向。
答案 0 :(得分:1)
假设本周您计算出,所有帖子都有0个观看次数,然后将该金额存储在特定帖子的单独列中。如果您要定期显示1周差异,请继续仅更新post_views
列一天或一周。
然后,您可以计算视图并从post_views
中减去最后存储的视图以获得差异。
计算差异后,使用posts_views
更新last_views列。
希望它有所帮助。
答案 1 :(得分:0)
我不确定你是想按照帖子或所有帖子来做这件事。
此方法适用于所有帖子。
您可以找到当前周的限制(在此示例中为周一至周日):
$startOfTheWeek = date("Y-m-d", strtotime('monday this week'));
$endOfTheWeek = date("Y-m-d", strtotime('sunday this week'));
然后运行类似以下查询的内容,您将在当前周和当前周内获得视图:
SELECT SUM(viewsThisWeek) AS viewsThisWeek, SUM(viewsBeforeThisWeek) AS viewsBeforeThisWeek FROM
(SELECT SUM(post_views_count) AS viewsThisWeek, 0 AS viewsBeforeThisWeek FROM posts AS tbl1
WHERE post_user = '{$username}' AND (post_date BETWEEN '{$startOfTheWeek}' AND '{$endOfTheWeek}')
UNION ALL
SELECT '0' AS viewsThisWeek, SUM(post_views_count) AS viewsBeforeThisWeek FROM posts AS tbl2
WHERE post_user = '{$username}' AND post_date < '{$startOfTheWeek}') AS tbl3
在此之后,您可以轻松计算视图中的差异。
如果您希望每个帖子有差异,那么只需根据该分隔界定查询。
答案 2 :(得分:0)
您可以制作一个存储过程来存储过去几天的数据,一旦数据较旧,那么7天就会删除该数据。
这将使您可以比较数据,一旦数据不再使用,它会自动删除它。
这会阻止您的数据库填满。