挿入の値を渡し、+ 1 を追加していますが、成功したと思いました: 値が既に存在することをチェックが返した場合、function(html) は実行されません (PHP に既に存在することをエコーします)。挿入が起こらなくても成功が実行されるのはなぜですか?
挿入が発生した場合にのみ AJAX を実行するにはどうすればよいですか (値がまだ存在しない場合)
JQUERY AJAX
$(function addThumbs() {
$('.vote-up').bind('click', function() {
// 'this' is a DOM element
// wrap 'this' in a jQuery object
var img = $(this);
// now we have the full jQuery API at our disposal
var user_id = $('#user_id').val();
var thumbsElem = img.closest(".thumbs");
var review_id = thumbsElem.find("#review_id").val();
var score = thumbsElem.find("#pluses").html();
var scoreupdated = parseInt(score) + 1;
if (review_id == 1)
{ alert('...'); }
else
{
$("#flash").show();
$("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...');
$.ajax({
type: "POST",
url: "ajax-thumbsup.php",
data:{
"user_id" : user_id,
"review_id" : review_id //we are passing the name value in URL
},
cache: false,
success: function(html)
{
img.attr('src', 'img/upgreen.png');
thumbsElem.find("#pluses").html(scoreupdated);
}
});
}
return false;
});
});
PHP
<?php
$user_id = $_REQUEST['user_id'];
$review_id = $_REQUEST['review_id'];
require('inc/db.php');
$plusesfind = "SELECT * FROM reviews_likes WHERE review_id = :review_id AND user_id = :user_id";
$plusesfind = $conn->prepare($plusesfind);
$plusesfind->execute(array(':review_id' => $review_id, ':user_id' => $user_id));
if(!$pluses = $plusesfind->fetch()) :
$con = mysql_connect("localhost","root","");
mysql_select_db("mytvbox", $con);
$sql = 'INSERT INTO reviews_likes (review_id, user_id, plus, minus) VALUES (' . $review_id .', ' . $user_id .', ' . 1 .' , ' . 0 .')';
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
else{
echo "success";
}
mysql_close($con);
else :
echo "it's already there";
endif ;
?>