0

ウェブサイトに「いいね」/「いいね」の投稿があります。「いいね」ボタンをクリックすると、ページを更新して表示することなく、check2の値を「like」の横に表示したいと思います。現在、「いいね」をクリックするとデータが挿入されますが、ページの更新時にのみ表示されます。私はこの種のものには絶望的です。

実行順にコードを示します。

助けてくれてありがとう。

投稿のように

echo "<div class='stream_option'><a id='likecontext_".$streamitem_data['streamitem_id']."' style='cursor:pointer;' onClick=\"likestatus(".$streamitem_data['streamitem_id'].",this.id);\">";
if($checklikes>0){
echo "Unlike";
}else{
echo "Like";
}
echo "</a> ";
$check2 = user_core::print_like_count($streamitem_data['streamitem_id']);
if($check2>0){
echo "(".$check2.")";
}

Ajax関数

function likestatus(postid,contextid){
var obj = document.getElementById(contextid);
if(obj.innerHTML=="Like"){
obj.innerHTML="Unlike";
}else{
obj.innerHTML="Like";
}
$.post("../include/like_do.php", { streamitem_id: postid} );
}

LIKE_DO

$check = user_core::check_liked($_SESSION['id'],$_POST['streamitem_id'],1);

user_core::do_like($_SESSION['id'],$_POST['streamitem_id'],1);

    if($check==0){
    ?>
    <?php
    }else{
    ?>
    <?php
    }
}
else{
echo "<script>alert('Error liking post');</script>";
}
?>

USER_CORE

 function check_liked($id,$streamid,$value){

            $check      =   "SELECT feedback_id FROM streamdata_feedback WHERE feedback_streamid=$streamid AND feedback_userid=$id AND feedback_rating=$value";
            $check1     =    mysql_query($check);
            $check2     =    mysql_num_rows($check1);
        return $check2;
        }

        function print_like_count($streamid){
                $check      =   "SELECT feedback_id FROM streamdata_feedback WHERE feedback_streamid=$streamid AND feedback_rating=1";
                $check1     =    mysql_query($check);
                $check2     =    mysql_num_rows($check1);
                if($check2>0){
                echo "(".$check2.")";
                }
        }
4

1 に答える 1

1

あなたが探しているのは、DHTML を使用して同類の値を変更する AJAX 送信です。

<script language="javascript">
    $(".likeButton").click(function() {
        $.post("likeProcessor.php", {
            id: $(this).attr('id')
        }, function(data) {
            $("#likeIndicator" + $(this).attr('id')).html(data);
        });
</script>

次に、likeProcessor スクリプトは、そのアイテムのいいね! の数を返すだけです。

注:これは、何が必要かを理解するための疑似コードです。jQuery と Ajax、RTM の詳細については、それぞれhttp://www.w3schools.com/jquery/default.asphttp://www.w3schools.com/ajax/default.aspを参照してください。

于 2012-07-26T20:39:35.773 に答える