Make a MySQL table for both the content and the ratings.
CREATE TABLE `your_database`.`content` (
`id` INT PRIMARY KEY AUTO_INCREMENT ,
`content` TEXT NOT NULL ,
) ENGINE = MYISAM ;
CREATE TABLE `your_database`.`ratings` (
`rating` VARCHAR( 7 ) NOT NULL ,
`id` INT ,
`ip` VARCHAR( 50 ) NOT NULL ,
) ENGINE = MYISAM ;
view.php, the main file where your ratings will be displayed based the $id variable
<?php
$id = $_GET['id']; //CONNECTS WITH THE CONTENT $ip = $_SERVER['REMOTE_ADDR']; //IP ADDRESS mysql_connect("server", "username", "password"); //CONNECT TO SERVER
$q= mysql_query("SELECT * FROM your_database.content WHERE id='$id'"); //GET THE CONTENT ID $r= mysql_fetch_assoc($q); $id = $r['id'];
//IF $id EXISTS, THEN COUNT LIKES & DISLIKES
if($id){ $q= mysql_query("SELECT * FROM your_database.ratings WHERE id='$id' AND rating='like'"); $likes= mysql_num_rows($q); $q= mysql_query("SELECT * FROM your_database.ratings WHERE id='$id' AND rating='dislike'"); $dislikes= mysql_num_rows($q);
//CHECKS IF EACH EQUALS 1 OR MORE, SINGULAR/PLURAL
$m='<img id="like" onClick="rate($(this).attr(\'id\'))" src="'.$ll.'"> <img id="dislike" onClick="rate($(this).attr(\'id\'))" src="'.$dd.'"><input id="id" type="hidden" value="'.$id.'">'; $m .= $likes.' '.$l.' and '.$dislikes.' '.$d.' for this demo.<br>';
//CHECKS IF USER HAS ALREADY RATED CONTENT
$q= mysql_query("SELECT * FROM your_database.ratings WHERE id='$id' AND ip='$ip'"); $r= mysql_fetch_assoc($q); //CHECKS IF USER HAS ALREADY RATED THIS ITEM
$q= mysql_query("SELECT * FROM your_database.content WHERE id='$id'"); $r= mysql_fetch_assoc($q); $id = $r['id'];
//IF $id EXISTS, THEN COUNT LIKES & DISLIKES
if($id)
{
//CHECKS IF USER HAS ALREADY RATED CONTENT
$q= mysql_query("SELECT * FROM your_database.ratings WHERE id='$id' AND ip='$ip'"); $r= mysql_fetch_assoc($q); //CHECKS IF USER HAS ALREADY RATED THIS ITEM
//IF USER HAS ALREADY RATED, BUT WANTS TO EITHER CANCEL OR CHANGE RATING...
if($r['rating']){ if($rating=='cancel'){ mysql_query("DELETE FROM your_database.ratings WHERE id='$id' AND ip='$ip'");
} elseif($r['rating']!=$rating) { mysql_query("UPDATE your_database.ratings SET rating='$rating' WHERE id='$id' AND ip='$ip'");
}
}
else
{ //INSERTS INITIAL RATING mysql_query("INSERT INTO your_database.ratings VALUES('$rating','$id','$ip')");
}
//COUNT LIKES & DISLIKES
$q= mysql_query("SELECT * FROM your_database.ratings WHERE id='$id' AND rating='like'"); $likes= mysql_num_rows($q); $q= mysql_query("SELECT * FROM your_database.ratings WHERE id='$id' AND rating='dislike'"); $dislikes= mysql_num_rows($q);
//CHECKS IF EACH EQUALS 1 OR MORE, SINGULAR/PLURAL
function rate(rating){ //'rating' VARIABLE FROM THE FORM in view.php var id = $("#id").val(); var data = 'rating='+rating+'&id='+id;
$.ajax({
type: 'POST',
url: 'rate.php', //POSTS FORM TO THIS FILE
data: data,
success: function(e){
$("#ratings").html(e); //REPLACES THE TEXT OF view.php
}
});
}