내 사용자는 날짜 정보와 함께 mysql에 기록 된 모든 사진과 사진을 업로드합니다. 그 달까지 업로드를 제한하고 싶습니다. 사용자는 한 달에 3 명의 사진을 업로드 할 수 있습니다. 이 일을하는 가장 좋은 방법은 무엇입니까?개월 단위로 사용자 작업 제한
환호
내 사용자는 날짜 정보와 함께 mysql에 기록 된 모든 사진과 사진을 업로드합니다. 그 달까지 업로드를 제한하고 싶습니다. 사용자는 한 달에 3 명의 사진을 업로드 할 수 있습니다. 이 일을하는 가장 좋은 방법은 무엇입니까?개월 단위로 사용자 작업 제한
환호
사용 :
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에 표시되지 않습니다.
거기에서 특히 월을 확인할 수 있습니다.
한 가지 가능한 솔루션 :
는 사용자 ID의 달의 테이블이 있습니다.
사용자가 사진을 업로드 할 때마다 해당 사용자의 당월 숫자가 증가합니다.
그런 다음 사진을 업로드 한 페이지에서 현재 달의 값을 확인하여 3보다 작은 지 확인합니다. 업로드를 허용하는 경우 3과 같으면 "업로드를 사용했습니다. 이번 달 "메시지.
각 사용자와 관련된 '최대 업로드 수'입력란을 추가하면 일부 사용자의 업로드 수를 늘리고 필요한 경우 더 적은 수의 사용자를 허용하거나 대역폭이 허용하는 한도를 늘리면됩니다. 테스트되지 않은
:
SELECT COUNT(*) FROM photos WHERE user="bob" AND createdAt > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
그 쿼리는 사용자 이름이 밥으로 지난 달에합니다 (createdAt
필드)에 따라 생성 된 photos
테이블의 행 수를 반환해야합니다. 그들에게 무언가를 올릴 수 있는지를 알기 위해 이것을 3
과 비교하십시오.
을 시도 할 것입니다. 그러나 이것은 현재 날짜의 1 개월 하위로 제한 할 것입니다. 2 월, 4 월, 6 월 등의 월별로해야합니다. –
"월별 한도"란 무엇을 의미합니까? "지난 30 일간의 제한"또는 "매월 1 일마다 제한 재설정"을 의미합니까?
첫 번째 경우 : 지난 달 동안 현재 사용자가 만든 사진의 수를 선택하십시오. 이 수가 3보다 큰 경우 사용자에게 업로드 권한을 거부합니다.
SELECT COUNT(*) FROM <pictures_table>
WHERE <upload_date_field> >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
AND <user_field> = <current_user>
나는 당신이 당신의 응용 프로그램 내에서 서로 다른 레이어에이 논리를 구현할 수 있습니다 언급해야한다,하지만 당신에게 달려 있습니다.
"제한이 재설정되었습니다. 매월 1 일마다 " –
이게 들리 겠지만, –