私は好き/嫌いなシステムを実装しようとしている漫画のウェブサイトを持っています。各ユーザーは、特定のコミックに 1 回だけ投票できます。コミックは「コミック」テーブルに保存され、アートワークは「アートワーク」に保存され、列 (ip、table_name、imgid) を持つ「投票」テーブルがあります。
誰かが投票すると、そのイメージ ID と「投票」テーブル内のテーブルに対して IP を保存したいと考えています。再度投票しようとすると、そのテーブルをチェックして、投票したかどうかを確認します。
また、そのIPを持つ誰かが再度投票しようとすると、投票テーブルのプライマリキー「ip」を更新するON DUPLICATE KEY UPDATEを実行したいと考えています。
include 'dbconnect.php';
$site = $_GET['_site'];
$imgid = intval($_GET['_id']);
$input = $_GET['_choice'];
if ($site == "artwork") {
$table = "artwork";
}
else {
$table = "comics";
}
$result = $mysqli->query("SELECT like_count, dislike_count FROM $table WHERE id = $imgid");
list($likes, $dislikes) = $result->fetch_array(MYSQLI_NUM);
$sql = "INSERT INTO
votes (ip, table_name, imgid)
VALUES
(\"".$_SERVER['REMOTE_ADDR']."\", \"$table\", $imgid)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
table_name = VALUES(table_name),
imgid = VALUES(imgid)";
if (!$mysqli->query($sql)) printf("Error: %s\n", $mysqli->error);
$sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = '$table' AND imgid = $imgid";
if ($result = $mysqli->query($sql)) {
if ($result->num_rows == 0) {
if ($input == "like") {
$sql = "UPDATE $table SET like_count = like_count + 1 WHERE id = $imgid";
$mysqli->query($sql);
$likes++;
}
else if ($input == "dislike") {
$sql = "UPDATE $table SET dislike_count = dislike_count + 1 WHERE id = $imgid";
$mysqli->query($sql);
$dislikes++;
}
echo "Likes: " . $likes . ", Dislikes: " . $dislikes;
}
else {
echo "You have already voted";
}
}
else {
printf("Error: %s\n", $mysqli->error);
}
mysqli_close($mysqli);
何かご意見は?