2010-06-15 40 views
0

我的用户上传照片和所有用mysql日志记录上传的日期信息。我想限制上传的月份。用户可能会在一个月内上传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 

如果没有任何照片,对于给定的月份,它不会在resulset露面。

从那里,你可以验证这个月尤其如此。

0

一个可能的解决方案:

具有用户ID和月表。

每当用户上传照片增量数当月该用户。

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

如果您还包括关联到每个用户的一些用户更上传与他人如有必要,少了你可能允许,或者只是增加了限制,如果你的带宽允许“最大上传”字段。

+0

这听起来不错,会尽量THX – 2010-06-15 14:44:31

1

未经测试:

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

那查询应返回已经由用户名为Bob的创建(根据createdAt场)在过去一个月的photos表中的行数。与3相比较,知道是否允许他们上传内容。

+0

但这将当前日起1个月子限制它,我需要做的是通过像二月,四月,六月喇嘛月... – 2010-06-15 14:15:07

1

你是什么意思与“受限制月”?你的意思是“限制过去30天”,还是“限制每个月的第一个月重置”?

在第一种情况下:只要选择在过去一个月内由当前用户创建的照片的数量。如果该数字大于等于3,则拒绝用户上传。

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

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

+0

我指的是“极限复位每个月的第一个月“ – 2010-06-15 14:44:04