1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| // Partie php : vote.php
// connexion à la BD
require_once('db.php');
$session_id = $_SESSION['client_id'];
if($_POST) {
$vote_type = trim($_POST["vote"]);
$reponse_id = filter_var(trim($_POST["id"]), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
$sql = "SELECT COUNT(*) AS nbr FROM votes WHERE reponse_id='$reponse_id' AND user_id='$session_id'";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
$query = $req->fetch(PDO::FETCH_ASSOC);
switch ($vote_type) {
case 'like':
if ($query['nbr'] >= 1) {
header('HTTP/1.1 500 Vous avez vote auparavant !');
exit();
} else {
$sql = "
SELECT vote_like
FROM votes v
INNER JOIN reponses rp
ON rp.reponse_id = v.reponse_id
WHERE v.reponse_id<>'$reponse_id'
AND user_id='$session_id'
";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
$rows1 = $req->fetch(PDO::FETCH_ASSOC);
if($rows1) {
$sql = "
UPDATE votes v
SET vote_like=vote_like+1
WHERE NOT EXISTS (SELECT reponse_id FROM reponse rp WHERE rp.reponse_id = v.reponse_id)
AND user_id='$session_id'
";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
} else {
$sql = "INSERT INTO votes (user_id, reponse_id, vote_like) VALUES ('$session_id', '$reponse_id', 1)";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
}
}
echo ($rows1["vote_like"]+1);
break;
case 'dislike':
if ($query['nbr'] >= 1) {
header('HTTP/1.1 500 Vous avez vote ce contenu auparavant !');
exit();
} else {
$sql = "SELECT vote_dislike FROM votes WHERE reponse_id='$reponse_id'";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
$rows2 = $req->fetch(PDO::FETCH_ASSOC);
if ($rows2["vote_dislike"]) {
$sql = "UPDATE votes SET vote_dislike=vote_dislike+1 WHERE reponse_id='$reponse_id'";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
} else {
$sql = "INSERT INTO votes (user_id, reponse_id, vote_dislike) VALUES ('$session_id', '$reponse_id', 1)";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
}
}
echo ($rows2["vote_dislike"]+1);
break;
case 'fetch':
$sql = "SELECT vote_like, vote_dislike FROM votes WHERE reponse_id='$reponse_id'";
$req = $db->prepare($sql);
$req->execute() or die(print_r($db->errorInfo()));
$rows3 = $req->fetch(PDO::FETCH_ASSOC);
$vote_like = ($rows3["vote_like"])?$rows3["vote_like"]:0;
$vote_dislike = ($rows3["vote_dislike"])?$rows3["vote_dislike"]:0;
$env_rep = array('vote_like'=>$vote_like, 'vote_dislike'=>$vote_dislike);
echo json_encode($env_rep);
break;
}
} |