首先真的很抱歉,如果它是一个愚蠢的问题,但我是初学者。
所以我最近开始使用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
}
jQuery ajax发布
$('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
而不是显示按钮,否则显示按钮不同,如果他们点击该功能将删除类似
但我很傻,因为我忘记了这实际上会返回数组,所以这是一个禁忌
所以我的问题是,我应该以某种方式使用jquery cookie来实现以下目标。
当用户点击时喜欢某些用户如何喜欢该个人资料并将按钮更改为不同。
或者可以请某人给我一点这个解决方案的暗示,只是提示或建议。
答案 0 :(得分:-1)
在我的观点中,我执行此任务:
1)用户登录,我们将其id保存到会话数据
2)当用户请求某个页面时,我们返回按钮“喜欢”或“不像”(建议输出2个按钮,一个隐藏,见下文)
3)当用户点击“喜欢”时:按照jquery发布和成功之后你可以通过更改样式,文本,事件等来改变按钮,但是我建议您隐藏“喜欢” “按钮和显示”不像“4)当用户点击“不像”时:与3相同,但在成功时更改为“喜欢”按钮
PS:在服务器端,我建议在成功或失败时返回true或false。