Написал скрипт лайков но он не хочет работать правильно.
Дело вот в чем когда я ставлю лайк на чьей нибудь записи то он засчитывается и я больше не могу лайкнуть эту же запись, но у некоторых пользователей получается ставить по 100-200 лайков на одну и ту же запись.
Фрагмент показа записи
$query = $db->where("pp_member_id", $about['member_id']);
$query = $db->getOne("likes");
if($member['member_id'] == $query['member_id'])
{
$style->content("{script}", "");
$button .= "<button type=\"button\" class=\"btn btn-primary\">Мне нравится {$stats['cnt']} <i class=\"fa fa-thumbs-up\"></i></button>";
}
else
{
$style->content("{script}", "");
$button .= "<div id=\"result\">
<form action=\"\" method=\"POST\" id=\"likes\">
<input type=\"hidden\" name=\"member_id\" value=\"{$member['member_id']}\">
<input type=\"hidden\" name=\"pp_member_id\" value=\"{$about['member_id']}\">
<button type=\"button\" class=\"btn btn-success\" onclick=\"likes();\">Нравится {$stats['cnt']} <i class=\"fa fa-thumbs-up\"></i></button>
</form>
<script type=\"text/javascript\">
function likes()
{
$.ajax({
type: \"POST\",
url: \"/like.php\",
data: $(\"#likes\").serialize(),
success: function(data)
{
document.getElementById(\"result\").innerHTML = data;
}
});
};
</script>
</div>
";
}
Фрагмент Like.php
$member_id = (int)$_POST['member_id'];
$pp_member_id = (int)$_POST['pp_member_id'];
$member_id = isset($member_id) ? $member_id : false;
$pp_member_id = isset($pp_member_id) ? $pp_member_id : false;
$query = $db->where("pp_member_id", $pp_member_id);
$query = $db->getOne("likes");
if($query['member_id'] == $member_id)
{
echo "<button href=\"javascript:void(0);\" class=\"btn btn-danger\">Вы уже ставили отметку мне нравится</button>";
}
else
{
$data = array(
'pp_member_id' => $pp_member_id,
'member_id' => $member_id
);
$db->insert('likes', $data);
$stats = $db->where("pp_member_id", $pp_member_id);
$stats = $db->getOne ("likes", "count(*) as cnt");
echo "<button href=\"javascript:void(0);\" class=\"btn btn-primary\">Мне нравится {$stats['cnt']} <i class=\"fa fa-thumbs-up\"></i></button>";
}
Результат работы скрипта с моей стороныРезультат работы скрипта у другого пользователя
Данные для входа чтобы посмотреть
Login: Test_Test
Password: 123456
forum.raknet.ru
После авторизации переходим на
ucp.raknet.ru/bio//Инициирую загрузку данных пользователя по сессии
$about = IPSMember::load($param, "all");//param это id пользователя кому мы ставим лайк
//проверяю авторизован ли данный пользователь который хочет поставить лайк
if($member['member_id'])
//делаю запрос в таблицу
$query = $db->where("pp_member_id", $about['member_id']);
$query = $db->getOne("likes");
//и проверяю
//Если сессия_id == тому что пришло в запросе в этом случае $query_member_id
if($member['member_id'] == $query['member_id'])
//то вывожу ему кнопку что вы уже ставили лайк
//если же он не ставил то есть
if($member['member_id'] != $query['member_id'])
//то вывожу ему функцию
<div id=\"result\">
<form action=\"\" method=\"POST\" id=\"likes\">
<input type=\"hidden\" name=\"member_id\" value=\"{$member['member_id']}\">//кто ставит лайк
<input type=\"hidden\" name=\"pp_member_id\" value=\"{$about['member_id']}\">//кому мы поставим лайк
<button type=\"button\" class=\"btn btn-success\" onclick=\"likes();\">Нравится {$stats['cnt']} <i class=\"fa fa-thumbs-up\"></i></button> //ставим лайк
</form>
<script type=\"text/javascript\">
function likes()
{
$.ajax({
type: \"POST\",
url: \"/like.php\",
data: $(\"#likes\").serialize(),
success: function(data)
{
document.getElementById(\"result\").innerHTML = data;
}
});
};
</script>
</div>
//в скрипте like я снова проверяю
$member_id = (int)$_POST['member_id']; //от случайных инъекций
$pp_member_id = (int)$_POST['pp_member_id']; //от случайных инъекций
$member_id = isset($member_id) ? $member_id : false; //проверяю не пусто ли
$pp_member_id = isset($pp_member_id) ? $pp_member_id : false; //проверяю не пусто ли
//делаю запрос кому поставили лайк
$query = $db->where("pp_member_id", $pp_member_id);
$query = $db->getOne("likes");
//и снова проверяю
//если в запросе кому поставили лайк имеется ид того пользователя кто поставил лайк
if($query['member_id'] == $member_id)
//то выводим кнопку
//вы уже поставили отметку мне нравится
//если же
if($query['member_id'] != $member_id)
//то заносим данные в таблицу
$data = array(
'pp_member_id' => $pp_member_id,
'member_id' => $member_id
);
$db->insert('likes', $data);
решил проблему путём добавления ещё одной проверки в запросе
$query = $db->where("pp_member_id", $about['member_id'])->where('member_id', $member['member_id']);
$query = $db->where("pp_member_id", $pp_member_id)->where('member_id', $member_id);