2010-06-15 7 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보다 작은 지 확인합니다. 업로드를 허용하는 경우 3과 같으면 "업로드를 사용했습니다. 이번 달 "메시지.

각 사용자와 관련된 '최대 업로드 수'입력란을 추가하면 일부 사용자의 업로드 수를 늘리고 필요한 경우 더 적은 수의 사용자를 허용하거나 대역폭이 허용하는 한도를 늘리면됩니다. 테스트되지 않은

+0

이게 들리 겠지만, –

1

:

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

그 쿼리는 사용자 이름이 밥으로 지난 달에합니다 (createdAt 필드)에 따라 생성 된 photos 테이블의 행 수를 반환해야합니다. 그들에게 무언가를 올릴 수 있는지를 알기 위해 이것을 3과 비교하십시오.

+0

을 시도 할 것입니다. 그러나 이것은 현재 날짜의 1 개월 하위로 제한 할 것입니다. 2 월, 4 월, 6 월 등의 월별로해야합니다. –

1

"월별 한도"란 무엇을 의미합니까? "지난 30 일간의 제한"또는 "매월 1 일마다 제한 재설정"을 의미합니까?

첫 번째 경우 : 지난 달 동안 현재 사용자가 만든 사진의 수를 선택하십시오. 이 수가 3보다 큰 경우 사용자에게 업로드 권한을 거부합니다.

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

나는 당신이 당신의 응용 프로그램 내에서 서로 다른 레이어에이 논리를 구현할 수 있습니다 언급해야한다,하지만 당신에게 달려 있습니다.

+0

"제한이 재설정되었습니다. 매월 1 일마다 " –

관련 문제