Поэтому я делаю игру-викторину, которая покажет процент людей, которые согласились с вами при нажатии на опцию. При нажатии отображаются результаты предыдущих игроков, и ваш голос будет добавлен в базу данных.
Я пытался выяснить это в течение достаточно долгого времени, и после прочтения многочисленных постов и просмотра большого количества видео кажется, что комбинация ajax и php — путь, я просто не могу этого понять играть хорошо.
Вот что у меня есть. (С удаленными несущественными вещами, чтобы сделать это более ясным.)
HTML
<div id="option1"></div>
Jquery
$(document).ready(function() {
$('#option1').click(function() {
var request = $.ajax({
type: "POST",
url: "clickvote.php",
});
});
});
Я чувствую, как будто это проблема. Кажется, что jquery на самом деле не вызывает php-файл, я что-то здесь упускаю, нужно ли мне вставлять некоторую форму данных в этот момент, а не в php?
PHP (clickvote.php)
<?php
include ('db_connect.php');
include ('getpageid.php');
$sql = "UPDATE questions SET votes1 = (votes1 + 1) WHERE id = {$pageid}";
mysqli_query($db,$sql);
?>
Этот PHP добавляет голосование и запускается, если я добавляю его вверху страницы с вопросом, однако он добавляет голосование при каждой загрузке страницы, а не при нажатии на вариант 1, как я хочу.
Дайте мне знать, если вам нужна дополнительная информация.
Любая помощь могла бы быть полезна!
Даниил
Сначала убедитесь, что ваш путь к PHP-скрипту. Используйте вашу сеть браузера, это должно вернуть успех.
Попробуйте отправить идентификатор страницы со стороны клиента
$(document).ready(function() {
$('#option1').on('click', (function() {
var request = $.ajax({
type: "POST",
url: "clickvote.php",
data: {"page" : <?php echo $page_id ?>}
});
});
});
А потом
<?php
include ('db_connect.php');
include ('getpageid.php');
$pageId = filter_input(INPUT_POST, 'page');
$sql = "UPDATE questions SET votes1 = (votes1 + 1) WHERE id = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param($pageId);
$stmt->execute();
?>
Добавьте подготовленные заявления, чтобы сделать ваш запрос безопасным.
Других решений пока нет …