Я пытаюсь узнать что-то новое, пока застрял при блокировке. Я пытаюсь создать очень простую c страницу с несколькими вариантами ответов, используя мои (очень) ограниченные знания PHP / Javascript ...
Так что у меня есть база данных SQL, содержащая вопросы викторины. Основными полями являются вопрос, правильный ответ и три неправильных ответа. В настоящее время в базе данных есть только одна строка.
<?php
$servername = "xxx";
$username = "xxx";
$password = "xxx";
$dbname = "xxx";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM quiz_db";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$conn->close();
?>
Таким образом, вопрос, правильный ответ, три неправильных ответа и все остальное в строке сохраняются в $row
.
Далее I Я беру все четыре возможных ответа в массив и затем перетасовываю порядок:
<?php
$answerslist = array($row["answercorrect"], $row["answerincorrect1"], $row["answerincorrect2"], $row["answerincorrect3"]);
shuffle($answerslist);
?>
Затем я помещаю четыре возможных ответа на набор кнопок в их теперь рандомизированном порядке:
<div class="row">
<div class="col-sm-3">
<button id = "answerA" onclick="clickA()" class="answer"><?php echo $answerslist[0]; ?></button>
</div>
<div class="col-sm-3">
<button id="answerB" onclick="clickB()" class="answer"><?php echo $answerslist[1]; ?></button>
</div>
<div class="col-sm-3">
<button id = "answerC" onclick="clickC()" class="answer"><?php echo $answerslist[2]; ?></button>
</div>
<div class="col-sm-3">
<button id = "answerD" onclick="clickD()" class="answer"><?php echo $answerslist[3]; ?></button>
</div>
</div>
Вы увидите, что я назначил событие onclick для каждой кнопки. Это выглядит следующим образом:
function clickA() {
var clickedAnswerA = "<?php echo $answerslist[0]; ?>"; // Get the value of the clicked answer
var correctAnswer = "<?php echo $row["answercorrect"] ?>"; // Get the value of the correct answer
if (clickedAnswerA == correctAnswer) {
document.getElementById("result").innerHTML = "CORRECT!";
document.getElementById("result").style.backgroundColor = "#32CD32";
} else {
document.getElementById("result").innerHTML = "WRONG!";
document.getElementById("result").style.backgroundColor = "#CC0000";
}
}
Существует четыре вышеперечисленных сценария, по одному для каждой кнопки. По сути, я хотел сказать: , если нажатый ответ = правильный ответ, сделайте результат ПРАВИЛЬНЫМ и зеленым, в противном случае НЕПРАВИЛЬНО! и красный
И, к моему удивлению, все это работает как положено!
Для следующего этапа, после вышесказанного, я хотел, чтобы он go соответствовал следующему вопросу в наборе результатов (т.е. следующему вопросу в $row
). Но я застреваю. В настоящее время в БД есть только один вопрос, но если я добавлю еще один, я не уверен, как сделать PHP по существу refre sh. Буду очень признателен за любые советы или указатели.
Кроме того, если кто-то может порекомендовать какие-либо улучшения того, что я сделал до сих пор, возможно, для простоты или эффективности, это было бы здорово, спасибо!