2012-02-16 3 views
0

내 웹 사이트에 대한 의견 시스템을 만들고 있습니다. 바로 지금 그것의 다만 기본적인 논평 체계. 그러나 새로운 코멘트가있을 때 이메일을받을 수있는 옵션을 사용자에게 제공하고 싶습니다.새로운 의견이있을 경우 사람들에게 이메일을 보내지 마십시오.

이렇게하려면 먼저 'email_notifications' 이라는 다른 테이블을 만든 다음 이메일을 넣기 만하면됩니다. 다른 테이블에서 이것을하는 이유. 이메일을 두 번 이상받는 것을 막기위한 것이 었습니다.

예를 들면.

나는 'Cool Site', 라고 말하면서 'Cool!', 라고 말하면서 다른 사람이 내 의견을 말할 때 두 번 게시했기 때문에 두 번 이메일을 받는다.

if(mysql_num_rows(mysql_query("SELECT * FROM email_notifications WHERE email='$email'") or die(mysql_error())) == 0) { 
    mysql_query("INSERT INTO email_notifications (email) VALUES ('$email')") or die(mysql_error()); 
    } 

을 그리고 임은 좀 ... 잘못 뭐죠 임 확신하지 PHP와 MySQL을 알고 : 나는 tryed

이 사용 일이 방지. 이메일이 이미 테이블에 있다면 mysql_query를 보내지 않는 것으로 가정한다. 그러나 어떤 이유로 그것이 테이블에 그것을 계속 추가합니다. 그리고 내 이메일이 두 번 도착하면 이메일을 두 번받습니다.

미리 감사드립니다.

답변

0

당신은 페이스 북과 같은 사이트는 일반적인 메시지를 전송하여 통지 시스템을 일반화 통지하는 경우가 크론을 실행하고 당신이 경우에 true 또는 false 확인 의미 "보류중인 알림을"에 대기중인 메시지가 있으면 목록에 대한 링크를 보냅니다. 원할 경우 더 강력하게 만들 수 있지만 일반적인 포인트는 알림 단위로 수행하는 대신 cron을 실행하는 것입니다.

우리가하는 방식은 user_id, 작업 (이 경우 알림) post_id, datetime 및 상태 (보류 중, 완료 됨 등)를 가리키는 관계형 테이블에 알림 상태를 기록한 다음 해당 정보를 사용하여 구독자에게 새로운 댓글이나 다른 것을 알리는 기본 메시지. 그들 중 하나만 가지고 있다면, 우리는 알림이 있는지 확인한 후 count()를 선택하여 이메일에 그것을 출력합니다.

이것은 cron에서 실행되는 것으로 효율성과 복잡성을 자동으로 관리 할 수있는 백그라운드에서 처리합니다. 전체 목록을 작성하는 것은 너무 복잡하지만, 유능한 프로그래머에게는이 점을 관리 할 수 ​​있습니다.

mysql에 대해 REPLACE INTO를 살펴보십시오. 알림 테이블에서이를 사용하여 마지막 항목을 대체하고 상태를 대기 중으로 재설정합니다. 그런 다음 cron은 상태가 보류 중임을 선택합니다. 희망이 도움이됩니다.

0

이메일에 데이터베이스가 있으면 이메일을 삽입하면됩니다.

스위치 == 1== 0

if(mysql_num_rows(mysql_query("SELECT * FROM email_notifications WHERE email='$email'") or die(mysql_error())) == 0) { 
    mysql_query("INSERT INTO email_notifications (email) VALUES ('$email')") or die(mysql_error()); 
} 
+1

나는 두 번째 이름을 정말 좋아합니다! – zerkms

+0

나는 0을 사용하려고했으나 그 중 아무 것도 작동하지 않았다. – Shawn31313

+0

메신저가 동일한 전자 메일 중 하나만 해당 테이블에있을 수 있도록하려고 시도했습니다. – Shawn31313

관련 문제