我目前正在建立一个用户可以发布的网站(如推特上的推文),但我想限制用户每小时可以在网站上提交的帖子数量。
这是我到目前为止编码的内容,它输出了用户拥有的帖子总数。
$counter = mysql_query("SELECT COUNT(*) AS post_userID FROM post");
$num = mysql_fetch_array($counter);
$count = $num["post_userID"];
echo("$count");
if($count > 2) {
echo("You have exceeded the posting limits, please try again in 24 hours");
}
MY POST TABLE
+------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+----------------+
| postID |int(11) | NO | PRI | NULL | auto_increment |
| post_userID|int(11) | NO | | NULL | |
| message |VARCHAR(140)| NO | | NULL | |
| time |datetime | NO | | NULL | |
+------------+------------+------+-----+---------+----------------+
正如您所看到的,我有一个时间(日期时间)存储在我的数据库中,它保留了提交帖子的时间。
实施例
+------------+------------+------------+----------+
| postID |post_userID | message | time |
+------------+------------+------------+----------+
| 1 | 25 | Hello Mike |1413620228|
| 2 | 26 | Hi John! |1413620332|
+------------+------------+------------+----------+
哦顺便说一句,我的服务器类型是MySQL。
答案 0 :(得分:1)
这样做的一种方法是:
select count(*) from post
where post_userID = 25
and time >= date_add(now(), INTERVAL -1 HOUR);
这将为您提供过去一小时内用户的帖子数量。
答案 1 :(得分:1)
我认为你有一个users
表。在用户表中创建一个名为last_post_submit_time
的列,然后每当用户提交帖子时保存该时间。最后,每当用户提交帖子检查current time - it's last_post_submit_time >= one hour
时。我希望你能得到它......
答案 2 :(得分:0)
您可以简单地将时间戳除以3600并将其四舍五入为整数,如下所示:
SELECT
ROUND(time/3600) AS hours_since_epoch
FROM
posts
WHERE
port_userID = <user> AND hours_since_epoch = ROUND(UNIX_TIMESTAMP(NOW())/3600)
这将返回用户在本小时(大致)发布的帖子帖子。
另一种方法是查看用户在过去一小时内发布了多少内容:
SELECT
COUNT(*)
FROM
posts
WHERE
port_userID = <user> AND time > UNIX_TIMESTAMP(NOW()) - 3600