この記事は公開から1年以上経過しており、内容が古くなっている可能性があります。
この記事は、『レーティング機能と「いいね!」を連動させる【Facebook】:STEP3』の続きの記事です。
すでにボタンが押されている場合はボタンを押せなくするプログラムを作成。
STEP3の「3-2. 「いいね!」ボタンの設置と、それを監視するスクリプトの追加」で作成したサンプルコードに手を加えます。
サンプルコード(step4.php)
[PHP]
id;
$_SESSION[“fb_user_id”] = $fb_user_id;
}
}
//これまでのレーティングデータを取得する
$fb_checked_vote = “”;
$fb_count_vote = 0;
$fb_like_vote = 0;
$fb_checked_flag = 0;
if(file_exists(“csv/rating.csv”)){
$fp = fopen(“csv/rating.csv”, “r”);
while ($data = fgets($fp)) {
$data = rtrim($data);
$data_split = explode(“,”, $data);
if($data_split[1] == $fb_my_url){
$fb_count_vote++;
if($data_split[2] == “1”){
$fb_like_vote++;
}
if($data_split[0] == $fb_user_id){
if($data_split[2] == “1”){
$fb_checked_vote = “いいね!”;
}else{
$fb_checked_vote = “だめだね!”;
}
}
}
}
fclose($fp);
}
?>
if (window.attachEvent) { //IE用 window.attachEvent("onload", watchRating); }else{ window.addEventListener("load", watchRating, false); }
function watchRating(){ if($("#rating_button") != ""){ timerID = setInterval(function () { if ($('.fb_edge_comment_widget.fb_iframe_widget:visible').length) { ratingSave('1'); clearInterval(timerID); }; }, 200); } }
function ratingSave(select_vote){ var php_url = "rating_save.php"; var fb_my_url = ""; var fb_user_id = "";
if(select_vote == "1"){ $('#rating_button').html("「いいね!」に投票されました。"); }else if(select_vote == "0"){ $('#rating_button').html("「だめだね!」に投票されました。"); }
$.post( php_url, {"select_vote":select_vote, "fb_my_url":fb_my_url, "fb_user_id":fb_user_id}, function(message, status) { if ('error' != status){ message_split = message.split("/"); $('#like_vote_id').html(message_split[0]); $('#count_vote_id').html(message_split[1]); } }, "html" ); }
レーティングに参加するにはFacebookのアカウントが必要です。
またFacebook用アプリの「(アプリ名)」を許可する必要があります。
Facebookアカウントを取得する | 人中、人がいいね!と言っています。
[/PHP]
■変更部分
58~64行目:csvデータ取得中にて、FacebookIDとページのURLが一致したものがあれば、どのボタンを押したかを取得する。
133~154行目:ボタンを押したデータがcsvから取得できなければ、ボタンを表示。できればボタンを非表示にし、どのボタンを押したかを表示する。
以上です。
すべて読まれた方はおつかれさまでした^^
長くなってすみません。
■追記補足
今回のサンプルでは、レーティングの数字において、ボタンを押したユーザの合計数も「いいね!」の合計数もこちら側が保持しているcsvデータを元に計算しています。
しかしFacebookをお使いの方はご存知かと思いますが、「いいね!」というのはFacebookにて取り消すことが出来ます。
ということはFacebookが保持している「いいね!」が押された回数と、csvデータから算出した数には誤差が起こりえますが、ここではあえてcsvデータの数字を使うことにしました。
もしFacebookが保持している「いいね!」の数を取得したい場合はFQLでデータ取得し、ボタンを押したユーザの合計数などを計算してください。
FQLでのデータ取得方法はこちらのページをご参照ください。
このサンプルでは、すでにボタンが押されているかどうかを、FacebookIDから判断させるプログラムにしましたが、STEP1にも書いたとおり、他にも色々と手段はあります。
Facebookアプリを許可させるのが煩わしい場合は、メールアドレスなどを入力させるなどの方法でも大丈夫かと思います。
また、csvでデータを管理する方法も、データベースが使えるサーバの場合はそちらで管理するほうが何かと便利かと思います。
csvでも構わないという場合は、データ管理だけにはご注意ください(csvファイルにアクセスできないよう制限をかけておくなど)。
最後にSTEP1~STEP4までに記述したサンプルコードをアップしました。
今更ではありますが「ブログじゃ読みづらい!」って方はこちらからダウンロードしてください。