@Web-Building

Как написать обработчик PHP, который, от каждого нового юзера, при клике на кнопку, обновляет БД, увеличивая счётчик на +1 ??

Доброго времени суток всем! Помогите пожалуйста, у кого есть возможность?
Имеется Jquery-скрипт, который в браузере, при каждом клике, выполняет инкремент.
Но мне нужно, чтобы только один единственный клик, от каждого нового пользователя, заносился в БД, ну и обновлялся общий счёт кликов на странице. Т.е. каждый клик увеличивает общий счёт на +1. Инкремент должен срабатывать только один раз, от каждого нового пользователя. Что нужно написать в counter.php ??

index.php
<div class="block-up" name="statistics">   
    <form id="ratingsLike" method="post">      
        <button id="btnLike" type="button"><i id="thumbs-up" class="far fa-thumbs-up"></i></button>   
    </form> 
     
    <div class="content-like-dislike">
        <span class="thanks">Thank you very much!</span> 
        <p id="like_count" data-id="<?= $id ?>">0<?= $likes ?></p>    
    </div>
</div>


main.js
$('#btnLike').on('click', function(event) {
	event.preventDefault();

	$.ajax({
		type: "post",
		url: "https://site.com/counter.php",
		data: ("id=" + $("#like_count").attr("data-id")),
		dataType: "text",
		success: function(result) {
			if (result) {
				$("#like_count").text(Number($("#like_count").text()) + 1);
			} else alert("Error");
		}
	});
});


Благодарю за внимание!
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 2
zb_venom
@zb_venom
Жизнерадостный чебурек
Наверно самое очевидное решение, это хранить лайки в таблице лайков:
| id | post_id | user_id | like |, где
  • post_id - идентификатор поста,
  • user_id - идентификатор пользователя,
  • like - можно от 0 до 1 или true or false соответственно.


А просто так использовать счетчик у Вас не получится.
Ответ написан
Комментировать
@WebEagle
Потребуется БД, вероятно у вас MySQL и это хорошо)) + на стороне сервера запускаем session
Сессия нам потребуется чтобы туда занести информацию о первом клике,
if (!isset($_SESSION['is_add_to_db'])) {
// добавление в БД, проверка избавит вас от лишних запросов в БД
}

Таблица в базе:
userId - либо уникальный идентификатор пользователя, если вы пользователей никак в базе не храните - то можно UUID или ID сессии. В любом случае это поле должно быть уникальным
Остальные поля не обязательны, по вашему желанию от ваших нужд. Но я бы добавил created dateTime чтобы знать когда произошел клик

Сколько строк в таблице - столько уникальных кликов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы