У меня есть функция Rating, которая делает следующее: Как только пользователь нажимает кнопку +1, рейтинг увеличивается на 1 и сохраняется в MySQL. То, что я хотел бы сделать, это нажать один раз, он изменит фон на другой цвет, как показано ниже.После нажатия кнопки сохранить в MySQL, затем отобразить выделение CSS
(То, что я хотел бы сделать, это «раз щелкнуть») на в текущий момент он просто обновляет номер с белым фоном)
ПРИМЕЧАНИЕ: Я просто прошу предложения или каким-то образом привести меня в правильном направлении, спасибо заранее.
Без щелкнул:
После нажатия:
PHP/HTML форму: подать +1
<div class="up vote" name="voteUp" id="<?php echo $post_iD;?>">
<div class="wrapper">+<?php echo $VoteRate;?></div>
</div>
AJAX: обновить кнопка
$(function()
{
$(".vote").click(function()
{
var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);
if (name=='voteUp')
{
$.ajax(
{
type: "POST",
url: "voting/up_vote.php",
data: dataString,
cache: false,
success: function(html)
{
parent.html(html);
}
});
}
return false;
});
});
up_vote.php: отправить из Аякса
$ip = $_SERVER['REMOTE_ADDR'];
if($_POST['id'])
{
$sth = $db->prepare("SELECT add_iP FROM PostsRating WHERE post_iD_fk = :id AND add_iP = :ip");
$sth->execute(array(':id' => $_POST['id'], ':ip' => $ip));
if($sth->fetchColumn() == 0)
{
$sth = $db->prepare("UPDATE posts set voteUp = voteUp+1 where post_iD = :id");
$sth->execute(array(':id' => $_POST['id']));
$sth = $db->prepare("INSERT into PostsRating (post_iD_fk, add_iP) VALUES (:id, :ip)");
$sth->execute(array(':id' => $_POST['id'], ':ip' => $ip));
} else {
$sth = $db->prepare("UPDATE posts set voteUp = voteUp-1 where post_iD = :id");
$sth->execute(array(':id' => $_POST['id']));
$sth = $db->prepare("DELETE FROM PostsRating WHERE post_iD_fk = :id AND add_iP = :ip");
$sth->execute(array(':id' => $_POST['id'], ':ip' => $ip));
}
$sth = $db->prepare("SELECT voteUp FROM posts WHERE post_iD = :id");
$sth->execute(array(':id' => $_POST['id']));
$row = $sth->fetch();
echo $row['voteUp'];
}
Вы * можете * хотеть быть осторожным, устанавливая идентификатор этого элемента на числовое значение. Не уверен в последствиях, но вы не используете 'id', для чего он предназначен для использования. Вместо этого вы можете использовать 'data-id =" 123 "' для такого случая, когда jQuery может читать значения данных. С учетом сказанного, в чем ваш вопрос? –
@RobW, спасибо, что ответите, я возьму в это награду. Я обновил сообщение с жирным текстом с вопросом. – iBrazilian
добавил ответ, который должен помочь. Вам просто нужно добавить новый класс css, а затем применить класс по мере необходимости.Вероятно, есть другие способы сделать это, но это самый простой. –