按月限制用户操作

时间:2010-06-15 14:07:11

标签: php mysql

我的用户上传照片和所有上传记录在mysql中的日期信息。我希望按月限制上传。用户可以在一个月内上传3张照片。这样做的最佳方式是什么?

欢呼声

4 个答案:

答案 0 :(得分:1)

未测试:

SELECT COUNT(*) FROM photos WHERE user="bob" AND createdAt > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)

该查询应该返回photos表中已创建的行数(根据createdAt字段)在过去一个月中由名为bob的用户返回的行数。将其与3进行比较,以了解是否允许他们上传内容。

答案 1 :(得分:1)

“按月限制”是什么意思?你的意思是“限制过去30天”,或“限制每月的第一天重置”?

如果是第一个:只需选择当前用户在上个月创建的图片数量。如果此数字>> = 3,则拒绝用户上传的权利。

SELECT COUNT(*) FROM <pictures_table> 
WHERE <upload_date_field> >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) 
AND <user_field> = <current_user>

我应该提到你可以在应用程序的不同层上实现这个逻辑,但这取决于你。

答案 2 :(得分:0)

一种可能的解决方案:

有一个用户ID和月份表。

每次用户上传照片时,都会为该用户增加当月的数字。

然后在他们上传照片的页面上检查当前月份的值以查看它是否小于3.如果允许上传,如果等于三则显示“您已经用完了上传月“消息。

如果您还包含与每个用户相关联的“最大上传”字段,则可以允许某些用户在必要时进行更多上传而其他用户更少,或者仅在您的带宽允许时增加限制。

答案 3 :(得分:0)

使用:

  SELECT YEAR(t.ur_date_field) AS yr,
         MONTH(t.ur_date_field) AS month_number,
         COUNT(*) AS num_photos
    FROM UR_TABLE t
GROUP BY YEAR(t.ur_date_field), MONTH(t.ur_date_field)
ORDER BY yr, month_number

......得到:

yr    |  month_number  |  num_photos
--------------------------------
2010  |  1             |  2
2010  |  2             |  1

如果某个月没有任何照片,它将不会显示在结果集中。

从那里,您可以特别验证月份。