는 기존 멤버와 테이블은 다음과 같은 구조로"회원 "이라고 가정하면 sponsor_email "을 확인하십시오. 이 값을 살균하고 이메일 주소인지 확인한 후
SELECT
id,
name,
submember1,
submember2
FROM
members
WHERE
email = "'.$sponsor_email.'"
을 ... 그리고 가입 사용자가 유효한 회원의 이메일 주소를 가지고 있는지 확인하십시오 (힌트 : 사용 정규식), 귀하의 회원 대한 정보를 잡아. , $member['submember1']
경우 0보다 큰 (이미 작성) - 당신이 새로운 가입을 넣어하는 슬롯 파악해야합니다, 지금
if ($member['submember1'] > 0 && $member['submember2'] > 0) {
// add warning to sponsor, reject the signup
}
:이 경우, 해당 멤버는 오픈 슬롯이 있는지 확인 가입은 슬롯 2에, 슬롯 1에 들어갑니다.
더 유연한 방법은 멤버와 스폰서를 연결하는 연관 테이블을 추가하는 것입니다. 대신에 을 사용하여 멤버 테이블에서이를 추적하는 필드를 추가하십시오. 이 접근법에는 몇 가지 장점이 있습니다. 가장 중요한 점은 2 개가 아닌 5 개의 submembers를 늘리려는 경우 데이터베이스 구조를 변경하지 않고도 코드의 작은 부분을 쉽게 변경할 수 있다는 것입니다. "당신의 방법"을 완료하면 데이터베이스와 코드를 변경해야 할 것입니다 ...
if ($member['submember1'] > 0 && $member['submember2'] > 0 && $member['submember3'] > 0 && $member['submember4'] > 0 && $member['submember5'] >0) {
// add warning to sponsor, reject the signup
}
... 퍽! 게다가, 이것은 새로운 등록을 넣을 슬롯을 결정 짓는 털이 많을 것입니다. 연관 테이블에는이 문제가 없습니다. 연관 테이블 경로를 사용하여, 당신은 아직도 멤버 테이블이 있습니다
Field name Type
------------------------------------------
id int (primary, auto)
name varchar
email varchar
을 ... 그리고 당신은 member_sponsors 테이블이 있습니다
Field name Type
------------------------------------------
id int (primary, auto)
sponsor_id int
member_id int
가 MEMBER_ID 필드는 "후원"회원의 ID를 보유를 , sponsor_id 필드는 "후원받는"회원의 ID를 보유합니다. 가입 과정에서이 테이블을 사용
, 한 이메일 경기로, 당신은 행이있을 것이다, 다시, 귀하의 회원을받을뿐만 아니라 가입 할 지금 현재 스폰서
SELECT
members.id,
members.name,
COUNT(member_sponsors.id) AS sponsored_count
FROM
members
LEFT JOIN
member_sponsors ON
member_sponsors.member_id = members.id
WHERE
email = "'.$sponsor_email.'"
GROUP BY
members.id
의 수를 지정된 사용자가 보유한 스폰서 회원의 ID, 이름 및 현재 수를 표시합니다. 귀하의 PHP는 지금과 같을 것이다 :
$limit_on_sponsorships = 2;
if ($member['sponsored_count'] >= $limit_on_sponsorships) {
// add warning to sponsor, reject the signup
}
$limit_on_sponsorships
당신이 지금 할 일은의 수를 변경하는 ... 등, 그것은 일정하게, 어디에서 와서 그것을 데이터베이스 설정을 할 수 있습니다 허용 된 스폰서는 하나의 값을 수정합니다. 이 방법을 사용하면 코드를보다 유연하고 변경할 준비가됩니다.
감사의 말 Tim - 별도의 테이블이있는 것이 좋습니다. – fangman