この記事は、『レーティング機能と「いいね!」を連動させる【Facebook】:STEP1』の続きの記事です。
STEP2からjqueryを使用しますので、あらかじめこちらのサイトからダウンロードを行ってください
2. 「いいね!」「だめだね!」ボタンが押されたとき、そのデータをcsv形式で保存するプログラムを作成。
ボタンが押された際、csv形式でデータを保存するプログラムを作成します。
保存するデータは
- ボタンを押したユーザのFacebookID
- ページのURL
- 「いいね!」「だめだね!」のどちらのボタンを押したか
です。
■2-1. POSTされてきたデータをCSVファイルに出力するプログラム
下記のサンプルコード(rating_save.php)は、Ajax Requestにより呼び出され、POSTされたデータをCSV形式で出力するというプログラムです。
サンプルコード(rating_save.php)
[PHP]
$delete_time){
@rmdir ($dir_name);
}
}
}
?>
[/PHP]
02~04行目:POSTされてきたデータを変数にいれます。
データはそれぞれ
- fb_user_id:FacebookID
- fb_my_url:ボタンが押されたページのURL
- select_vote:押されたボタン。「いいね!」なら「1」、「だめだね!」なら「0」
となっています。
12~49行目:データをCSV形式で保存します。また、すでに保存されているデータを調べ、ボタンの押された回数と「いいね!」が押された回数を取得し、出力します。
51~85行目:データの保存が重複しないよう、ロックをかける関数とロック解除の関数です。
■2-2. Ajax Requestを用いて上記のプログラム(rating_save.php)を呼び出す
STEP1の「1-2. PHPにてFacebookユーザの基本データ取得」で作成したプログラムにいろいろと追加します。
サンプルコード(step2.php)
[PHP]
id;
$_SESSION["fb_user_id"] = $fb_user_id;
}
}
//これまでのレーティングデータを取得する
$fb_count_vote = 0;
$fb_like_vote = 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++;
}
}
}
fclose($fp);
}
?>
レーティングに参加するにはFacebookのアカウントが必要です。
またFacebook用アプリの「(アプリ名)」を許可する必要があります。
人中、人がいいね!と言っています。
[/PHP]
■追加部分
42~58行目:すでに投票されているレーティング情報を取得する。
68行目:jqueryの読み込み(jqueryのダウンロードはこちら)
70~95行目:ボタンが押された時の処理。rating_save.phpへデータを渡し実行させる。
106~110行目:ボタンを仮設置(まだFacebookとの連携はされていない)
127行目:レーティング情報の表示。
※まだこの段階では、Facebookとの連携はされていませんし、一度「いいね!」「だめだね!」のいずれかを押していても画面をリロードすれば再投票できてしまいます。