Hello, can some one please help me but I get errors like
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /Applications/MAMP/htdocs/live/vote_process.php on line 45
This error shows up when I like(thumbs up) a content or article and the record in the database table never updates. But the error never shows up when I dislike(thumbs down) a content or article.
The dislike(thumbs down) record will show on the page when you dislike but will show 0 once you refresh the page. is there better way to correct this? Below is my code:
The PHP CODE
<?php
if($_POST)
{
### connect to mySql
$sql_con = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
//get type of vote from client
$user_vote_type = trim($_POST["vote"]);
//get unique content ID and sanitize it (cos we never know).
$music_id = filter_var(trim($_POST["music_id"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
//Convert content ID to MD5 hash (optional)
$music_id = hash('md5', $music_id);
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
switch ($user_vote_type)
{
##### User liked the content #########
case 'up':
//check if user has already voted, determined by unique content cookie
if (isset($_COOKIE["voted_".$music_id]))
{
header('HTTP/1.1 500 Already Voted'); //cookie found, user has already voted
exit(); //exit script
}
//get vote_up value from db using music_id
$qur = mysqli_query($sql_con,"SELECT like FROM music_like WHERE music_id='$music_id' LIMIT 1");
$get_total_rows = mysqli_fetch_assoc($qur);
if($get_total_rows)
{
//found record, update vote_up the value
mysqli_query($sql_con,"UPDATE music_like SET like=like+1 WHERE music_id='$music_id'");
}else{
//no record found, insert new record in db
mysqli_query($sql_con,"INSERT INTO music_like (music_id, like) value('$music_id',1)");
}
setcookie("voted_".$music_id, 1, time()+7200); // set cookie that expires in 2 hour "time()+7200".
echo ($get_total_rows["like"]+1); //display total liked votes
break;
##### User disliked the content #########
case 'down':
//check if user has already voted, determined by unique content cookie
if (isset($_COOKIE["voted_".$music_id]))
{
header('HTTP/1.1 500 Already Voted this Content!'); //cookie found, user has already voted
exit(); //exit script
}
//get vote_up value from db using unique_content_id
$qur = mysqli_query($sql_con,"SELECT dislike FROM music_like WHERE music_id='$music_id' LIMIT 1");
$get_total_rows = mysqli_fetch_assoc($qur);
if($get_total_rows)
{
//found record, update vote_down the value
mysqli_query($sql_con,"UPDATE music_like SET dislike=dislike+1 WHERE music_id='$music_id'");
}else{
//no record found, insert new record in db
mysqli_query($sql_con,"INSERT INTO music_like (music_id, dislike) value('$music_id',1)");
}
setcookie("voted_".$music_id, 1, time()+7200); // set cookie that expires in 2 hour "time()+7200".
echo ($get_total_rows["dislike"]+1);//display total disliked votes
break;
##### respond votes for each content #########
case 'fetch':
//get vote_up and vote_down value from db using unique_content_id
$qur = mysqli_query($sql_con,"SELECT like, dislike FROM music_like WHERE music_id='$music_id' LIMIT 1");
$row = mysqli_fetch_assoc($qur);
//making sure value is not empty.
$like = ($row["like"])?$row["like"]:0;
$dislike = ($row["dislike"])?$row["dislike"]:0;
//build array for php json
$send_response = array('like'=>$like, 'dislike'=>$dislike);
echo json_encode($send_response); //display json encoded values
break;
}
}
?>
The JQUERY CODE
$(document).ready(function() {
//####### on page load, retrive votes for each content
$.each( $('.voting_wrapper'), function(){
//retrive music_id from this voting_wrapper element
var music_id = $(this).attr("id");
//prepare post content
post_data = {'music_id':music_id, 'vote':'fetch'};
//send our data to "vote_process.php" using jQuery $.post()
$.post('vote_process.php', post_data, function(response) {
//retrive votes from server, replace each vote count text
$('#'+music_id+' .like').text(response.like);
$('#'+music_id+' .dislike').text(response.dislike);
},'json');
});
//####### on button click, get user vote and send it to vote_process.php using jQuery $.post().
$(".voting_wrapper .voting_btn").click(function (e) {
//get class name (down_button / up_button) of clicked element
var clicked_button = $(this).children().attr('class');
//get unique ID from voted parent element
var music_id = $(this).parent().attr("id");
if(clicked_button==='down_button') //user disliked the content
{
//prepare post content
post_data = {'music_id':music_id, 'vote':'down'};
//send our data to "vote_process.php" using jQuery $.post()
$.post('vote_process.php', post_data, function(data) {
//replace vote down count text with new values
$('#'+music_id+' .dislike').text(data);
//thank user for the dislike
alert("Thanks! Each Vote Counts, Even Dislikes!");
}).fail(function(err) {
//alert user about the HTTP server error
alert(err.statusText);
});
}
else if(clicked_button==='up_button') //user liked the content
{
//prepare post content
post_data = {'music_id':music_id, 'vote':'up'};
//send our data to "vote_process.php" using jQuery $.post()
$.post('vote_process.php', post_data, function(data) {
//replace vote up count text with new values
$('#'+music_id+' .like').text(data);
//thank user for liking the content
alert("Thanks! For Liking This Content.");
}).fail(function(err) {
//alert user about the HTTP server error
alert(err.statusText);
});
}
});
//end
});