私はバックエンドのもので本当に新しく、投票の仕組みを持つ複数の写真エントリーを持つFacebookアプリを作っています。あなたは1日に1回または複数のエントリーに投票することができます。またあなたのFacebook IDを検出するので、投票時にあなたのFacebook ID、あなたが投票したエントリー番号、投票した日付を検出します。現在の日付に投票すると、「あなたは投票に成功しました」というポップアップが表示されます。同じ日付をもう一度やり直すと、ポップアップメッセージが変わり、代わりに「明日もう一度投票しよう」と表示されます。また、エントリーページの投票数も表示されます。1日に1回Facebook Appの投票機能を制限する方法は?
私の唯一の問題は、初めてのユーザーであれば正常に動作し、現在の日付のすべてのエントリに投票できますが、翌日に戻ったときに投票すると、あなたは既に投票したと言い、投票数は更新されません。
ここではPHPのページのコードです:(、助けに感謝し、問題を解決し、すでに、これを編集した)
date_default_timezone_set('Asia/Manila');
// Get last vote date: fetch_date_voted returns none if user voted for first time
$current_date = date('Y-m-d');
$fetch_date_return = $this->fetch_date_voted($entry_id, $facebook_id, $table_prefix, $conn);
$last_vote_date = $fetch_date_return['last_date'];
$return['date_last_voted'] = $fetch_date_return;
// Below is a code i got from stackoverflow - 844641242329946 (kristina id)
/*if($last_vote_date && ($last_vote_date == "none" || (strtotime($last_vote_date) + (60*60*24)) < strtotime($current_date))){*/
// Below is the original code
if($last_vote_date == "none" || $last_vote_date < $current_date) {
$table_name = $table_prefix . '_voter';
$query = $conn->query("
INSERT INTO $table_name
(facebook_id, entry_id, date_voted)
VALUES
($facebook_id, $entry_id, '$current_date')
");
//
// After doing INSERT, the variable $query will return a TRUE status
if ($query) {
// If the date fetched is TRUE, it will UPDATE
$update = $this->update_count($entry_id, $table_prefix, $conn);
// If update is successful, it will fetch the latest vote_count
if($update) {
$fetched_data = $this->fetch_current_count($entry_id, $table_prefix, $conn);
if ($fetched_data['status']) {
$return['status'] = true;
$return['vote_count'] = $fetched_data['vote_count'];
} else {
$return['status'] = false;
}
} else {
$return['status'] = false;
}
} else {
die('Error : ('. $conn->errno .') '. $conn->error);
$return['status'] = false;
$return['error_response'] = $conn->error;
}
} else {
$return['status'] = false;
$return['error_response'] = 'date_invalid';
}
echo json_encode($return);
//$query->close();
$conn->close();
}
たとえば、今日の午後11時に投票すると、翌日の午前12時10分に投票できますか? –
はい、私があなたに与えた答えを理解していますか?私はあなたがそれを理解するのを助けることができるように不明なものは何ですか?これをテストするには、データベースレコードを変更し、日付を24時間前に設定します。 – Garytje
私はPHPファイルにコードをどこに置くべきかわかりません。そして、私は自分の日時をどのように変えますか?データベース列date_votedの型をTIMEまたはDATETIMEまたはTIMESTAMPに変更する必要がありますか?現在DATEタイプです。 –