我在php中创建了一个博客。对于每个评论,用户可以按收藏/不喜欢按钮(如果需要)来收藏/不喜欢帖子。我的按钮非常完美。我得到的唯一问题是,当用户按收藏夹/收藏夹...我没有得到这篇文章的收藏夹/不喜欢的数量。为了得到这个,每次我必须重新压缩页面。有些人告诉我,我需要使用Ajax才能做到这一点。
我使用表格喜欢,为每个帖子保存收藏:喜欢(like_id,user,the_comment_id) 我对aeach帖子使用表格评论:评论(comments_id,评论,用户)
这是我的PHP代码:
<?php
$comment_id = $row['comments_id'];
// ... code above
//button for favorite and unfavorite
$get_button = mysql_query(" SELECT * FROM `likes` WHERE `user`='$session_user_id' AND `the_comment_id`='{$row['comments_id']}' ");
$get = mysql_fetch_assoc($get_button);
if($get==""){
$comments .= "<a role='button' class='button' id='like$comment_id' style='color:grey;'>Favorite</a>";
}else if($get!=""){
$comments .= "<a role='button' class='button' id='unlike$comment_id' style='color:grey;'>Unfavorite</a>";
}
// place favorites for this comment here
$comments .= " $total_favorites ";
?>
这是我的jquery:
<script>
$(document).ready(function(){
$("#like<?php echo $comment_id; ?>").click(function() {
var id = "<?php echo $comment_id; ?>";
$.post("parse.php",{like:id}, function(data){
$("#like<?php echo $comment_id; ?>");
$(".button<?php echo $comment_id; ?>").html(data);
});
$(this).hide().attr("Disabled", "True").text("Favorite done!").show();
});
$("#unlike<?php echo $comment_id; ?>").click(function() {
var id = "<?php echo $comment_id; ?>";
$.post("parse.php",{unlike:id}, function(data){
$("#unlike<?php echo $comment_id; ?>");
$(".button<?php echo $comment_id; ?>").html(data);
});
$(this).hide().attr("Disabled", "True").text("Unfavorite done!").show();
});
});
</script>
这是我的parse.php代码:
<?php
if(isset($_POST['like'])){
$id = $_POST['like'];
mysql_query("INSERT INTO likes VALUES ('', '$session_user_id', '$id') ");
}
if(isset($_POST['unlike'])){
$id = $_POST['unlike'];
mysql_query(" DELETE FROM likes WHERE `user`='$session_user_id' AND `the_comment_id`='$id' ");
}
$favorites = mysql_query(" SELECT * FROM `likes` WHERE `the_comment_id`='{$row['comments_id']}' ");
$total_favorites = mysql_num_rows($favorites);
?>
答案 0 :(得分:2)
您需要从parse.php
脚本返回一些内容。 data
变量不包含计数,除非您在设置.html(data)
值之前直接回显或返回JSON并在jQuery函数中解析。
答案 1 :(得分:1)
你是对的,AJAX是要走的路。请注意,AJAX有多个名称:
$.ajax()
- jQuery超集$.get()
- 使用$.ajax()
TYPE: "GET"
的快捷方式
$.post()
- 使用$.ajax()
TYPE: "POST"
的快捷方式
$.load()
- 请参阅Difference between $("#id").load and $.ajax? 以下是一些可以帮助您开始使用AJAX的示例:
答案 2 :(得分:1)
除了Lucas所说的内容(请在获得代表时向他投票),请将代码更改为:
<?php
if(isset($_POST['like'])){
$id = $_POST['like'];
mysql_query("INSERT INTO likes VALUES ('', '$session_user_id', '$id') ");
}
if(isset($_POST['unlike'])){
$id = $_POST['unlike'];
mysql_query(" DELETE FROM likes WHERE `user`='$session_user_id' AND `the_comment_id`='$id' ");
}
$favorites = mysql_query(" SELECT * FROM `likes` WHERE `the_comment_id`='{$row['comments_id']}' ");
$total_favorites = mysql_num_rows($favorites);
$out = '<h1>Found In Database</h1>';
$out .= '<p>You received ' .$total_favorites. ' favorites.';
echo $out;
?>
答案 3 :(得分:0)
如果这不起作用,请发布相关的HTML,以便我们可以准确定位您的DOM元素:
$(document).ready(function(){
$("[id^=like]").click(function() {
var window.id = $(this).attr('id').split['e'][1];
$.post("parse.php",{like:id}, function(data){
$("#like"+id).find(".button").html(data);
}); //END .post
$(this).hide().attr("Disabled", "True").text("Favorite done!").show();
}); //END like.click
$("[id^=unlike]").click(function() {
var window.id = $(this).attr('id').split['e'][1];
$.post("parse.php",{unlike:id}, function(data){
$("#unlike"+id).find(".button").html(data);
}); //END .post
$(this).hide().attr("Disabled", "True").text("Unfavorite done!").show();
}); //END #unlike.click
});
注意:
我们使用$("[id^=unlike]")
作为选择器 - 这意味着:获取带有以开头的ID“的DOM元素”与“
$(this).attr('id').split['e'][1]
表示:
一个。获取ID属性(“like5”或“different123”)
湾将其分解为一个数组:lik
和5
- 或 - unlik
和123
C。抓住第二个数组元素(数字:5或123)
d。将其粘贴在名为id