Make a MySQL table for both the content and the ratings.
CREATE TABLE `your_database`.`content` (
`id` INT NOT NULL ,
`content` TEXT NOT NULL
) ENGINE = MYISAM ;
CREATE TABLE `your_database`.`ratings` (
`rating` VARCHAR( 7 ) NOT NULL ,
`id` INT NOT NULL,
`ip` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
view.php, the main file where the ratings will be displayed based the content, which is referenced by 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 $db='your_database';
$q= mysql_query("SELECT * FROM $db.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 $db.ratings WHERE id='$id' AND rating='like'"); $likes= mysql_num_rows($q); $q= mysql_query("SELECT * FROM $db.ratings WHERE id='$id' AND rating='dislike'"); $dislikes= mysql_num_rows($q);
//CHECKS IF EACH EQUALS 1 OR MORE, SINGULAR/PLURAL
$q= mysql_query("SELECT * FROM $db.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 $db.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 $db.ratings WHERE id='$id' AND ip='$ip'");
} elseif($r['rating']!=$rating) { mysql_query("UPDATE $db.ratings SET rating='$rating' WHERE id='$id' AND ip='$ip'");
}
}
else
{ //INSERTS INITIAL RATING mysql_query("INSERT INTO $db.ratings VALUES('$rating','$id','$ip')");
}
//COUNT LIKES & DISLIKES
$q= mysql_query("SELECT * FROM $db.ratings WHERE id='$id' AND rating='like'"); $likes= mysql_num_rows($q); $q= mysql_query("SELECT * FROM $db.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 the_id = $("#id").val(); //'id' OF THE CONTENT BEING RATED var data = 'rating='+rating+'&id='+the_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
}
});
}