J'ai un site Web de bandes dessinées où j'essaie de mettre en place un système similaire/antipathique. Chaque utilisateur ne peut voter qu'une seule fois sur une bande dessinée particulière. Les bandes dessinées sont stockées dans la table 'comics', les illustrations stockées dans 'artwork', et j'ai une table 'votes' avec des colonnes (ip, nom_table, imgid).Mysql: ON DUPLICATE KEY UPDATE erreurs de lancement
Quand quelqu'un vote, je veux stocker son adresse IP contre cet id d'image et cette table dans le tableau "votes". S'ils essaient de voter à nouveau, ils vérifieront cette table pour voir s'ils ont voté.
En outre, je veux faire une mise à jour de clé DUPLICATE qui mettra à jour la clé primaire "ip" dans la table des votes si quelqu'un avec cette adresse IP essaie de voter à nouveau.
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);
Des pensées?
Quel est le message d'erreur? –
@MarkByers Qu'est-il arrivé à votre réponse? lol. Je viens de répondre à cela. Le message d'erreur est qu'il ne me permet pas de voter à nouveau même si j'ai une nouvelle image – Growler
Alors, quel est le message d'erreur? – symcbean