0

ばかげた質問ならまずは本当に申し訳ありませんが、私は初心者です。

それで私は最近fulephpを使い始めました、そして私は小さなサイトを持っています、そしてユーザーに他のユーザープロフィールを好きになる能力を与えたいです。

しかし、私はこの部分で少し経験がありません。だから私はテーブルを持っていますusers_like

id | users_id | liked_by
1  | 5        | 1
2  | 5        | 3
3  | 1        | 2
4  | 1        | 9

user_id好きになったのはliked_by誰ですか

だから私はユーザープロフィールにいいねボタンを持っています

<button class="like btn btn-primary" data-like="<?php echo $user->profile['user_id']; ?>">Like</button>

data-likeようなものを取得するユーザーIDが含まれています

そして、インサートはこのように見えます

PHP関数

public function action_like($id)
    {
        if(Input::is_ajax()):

            $response = Response::forge();

                $like = Model_Like::forge();
                $like->user_id = $id;
                $like->liked_by = Session::get('sentry_user');
                $like->save();

                $response->body(json_encode(array(
                    'status' => 'liked',
                )));

            return $response;


        endif;// is ajax
    } 

jQueryajaxの投稿

$('button.like').on('click', function(){
    var likeId = $(this).data('like');
    $.ajax({
        type: "POST",
        url: siteUrl + "profile/like/" + likeId,
        dataType: "json",
        context: this,
        beforeSend: function()
        {
            $(this).attr('disabled', 'disabled');
        },

        success: function(data)
        {
            if(data.status === "liked") {
                $(this).removeClass('like')
                .addClass('unlike')
                .text('Un-Like');

            }
        }, 

        complete: function()
        {
            $(this).removeAttr('disabled', 'disabled');
        }
    });
});

だから実際に私の論理はこれでした。

ormはユーザーが好きなものを返します、そして私はこれをすることを考えていました

if(Session::get('sentry_user') != $like['liked_by']) {
  <button class="like btn btn-primary" data-like="<?php echo $user->profile['user_id']; ?>">Like</button>
}
else {
  <button class="unlike btn btn-primary" data-like="<?php echo $user->profile['user_id']; ?>">Un-Like</button>

}

したがって、ログインしたユーザーIDがliked_byボタンを表示するよりも等しくない場合は、ボタンを表示します。それ以外の場合は、ボタンを表示します。クリックすると、関数はそのようなものを削除します。

しかし、これが実際に配列を返すことを忘れたので、私はばかげていたので、これはノーノーです

だから私の質問は、次のことを達成するためにどういうわけかjquerycookieを使用する必要があるということです。

ユーザーが「いいね」をクリックすると、ユーザーはそのプロファイルを高く評価し、ボタンを「嫌い」に変更します。

または、誰かが私にこの解決策のちょっとしたヒント、ただのヒントやアドバイスをくれたらいいのにと思います。

4

1 に答える 1

-1

私の観点では、私はこのタスクを次のように行います:

1) ユーザーがログインし、その ID をセッション データに保存します

2) ユーザーが何らかのページを要求すると、「好き」または「好きではない」ボタンを返します (2 つのボタンを非表示にすることをお勧めします。以下を参照してください)。

3) ユーザーが「いいね」をクリックしたとき: jquery like で投稿し、成功後にスタイル、テキスト、イベントなどを変更することでボタンに変更する必要がありますが、「いいね」ボタンを非表示にすることをお勧めします。 「違う」を表示する

4) ユーザーが「いいね」をクリックしたとき: 3) と同じですが、成功すると「いいね」ボタンに変わります

PS: サーバー側では、成功または失敗時に true または false に戻ることをお勧めします。

于 2012-11-08T17:04:48.707 に答える