style update + server checking answers
This commit is contained in:
parent
1bca27612f
commit
d7262080f8
11 changed files with 101 additions and 23 deletions
8
js/functions.js
Normal file
8
js/functions.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
//msg
|
||||
export function msg(message) {
|
||||
const output = document.getElementById("info");
|
||||
output.innerHTML = result.msg;
|
||||
output.style.display = "block";
|
||||
}
|
||||
|
||||
//password show
|
|
@ -31,7 +31,6 @@ session_destroy();
|
|||
<a href="/login/register/">Zarejestruj się</a>
|
||||
</main>
|
||||
</div>
|
||||
<h1></h1>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -31,7 +31,6 @@ session_destroy();
|
|||
<p><a href="/login/">Powróć do strony logowania</a></p>
|
||||
</main>
|
||||
</div>
|
||||
<h1></h1>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -19,7 +19,6 @@ include $_SERVER["DOCUMENT_ROOT"] . "/php/pages.php";
|
|||
|
||||
</main>
|
||||
</div>
|
||||
<h1></h1>
|
||||
</body>
|
||||
|
||||
</html>
|
24
sql/index.php
Normal file
24
sql/index.php
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
include $_SERVER["DOCUMENT_ROOT"] . "/php/functions.php";
|
||||
// $conn = connectDB();
|
||||
|
||||
// $file = fopen("insert3.sql", "r");
|
||||
// if (!$file) {
|
||||
// die("Unable to open file!");
|
||||
// }
|
||||
|
||||
// $sql = fread($file, filesize("insert3.sql"));
|
||||
// fclose($file);
|
||||
|
||||
// if ($conn->multi_query($sql)) {
|
||||
// do {
|
||||
// if ($result = $conn->store_result()) {
|
||||
// $result->free();
|
||||
// }
|
||||
// } while ($conn->more_results() && $conn->next_result());
|
||||
// } else {
|
||||
// echo "SQL Error: " . $conn->error;
|
||||
// }
|
||||
|
||||
// $conn->close();
|
||||
exit("DISABLED!!!");
|
|
@ -14,6 +14,7 @@ body {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
|
||||
main {
|
||||
|
|
|
@ -2,4 +2,13 @@
|
|||
|
||||
main form p span.bigger {
|
||||
font-size: larger;
|
||||
}
|
||||
}
|
||||
main div.question {
|
||||
margin: 50px auto;
|
||||
border: 1px solid var(--border-basic);
|
||||
width: 90%;
|
||||
}
|
||||
main div.question div.answer {
|
||||
text-align: left;
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
</main>
|
||||
</div>
|
||||
<h1></h1>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -21,23 +21,23 @@ include $_SERVER["DOCUMENT_ROOT"] . "/php/pages.php";
|
|||
<form id="startForm">
|
||||
<?php
|
||||
if (isset($_GET["own"]))
|
||||
echo "<p><span class='bigger'>Długość testu:</span><br><input type='number' name='testLength' value='20' min='2' max='99'>pytań</p>";
|
||||
echo "<p><span class='bigger'>Długość testu:</span><br><input type='number' name='testLength' value='20' min='2' max='99'>pytań</p><script>const own = true;</script>";
|
||||
else
|
||||
echo "<input type='hidden' name='testLength' value='20'>";
|
||||
echo "<input type='hidden' name='testLength' value='20'><script>const own = false;</script>";
|
||||
?>
|
||||
<p><input type="submit" value="Rozpocznij test"></p>
|
||||
<?php
|
||||
if (!isset($_SESSION["username"]))
|
||||
echo "<p id='info' style='display: block;'>Nie jesteś zalogowany,<br>więc żaden postęp nie zostanie zapisany!</p>";
|
||||
echo "<p id='info' style='display: block;'>Nie jesteś zalogowany,<br>więc żaden postęp nie zostanie zapisany!</p><script>const logged = false;</script>";
|
||||
else
|
||||
echo "<p id='info'></p>"
|
||||
echo "<p id='info'></p><script>const logged = true;</script>"
|
||||
?>
|
||||
</form>
|
||||
<h4>Jednak nie chcesz zacząć?</h4>
|
||||
<p><a href="/">Powrót do strony głównej</a></p>
|
||||
</main>
|
||||
</div>
|
||||
<h1></h1>
|
||||
<!-- <h1></h1> -->
|
||||
</body>
|
||||
|
||||
</html>
|
45
test/test.js
45
test/test.js
|
@ -4,6 +4,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
document.getElementById("startForm").addEventListener("submit", async function (formE) {
|
||||
formE.preventDefault();
|
||||
formData = new FormData(formE.target);
|
||||
formData.append("testStart", "true")
|
||||
const response = await fetch("test.php", {
|
||||
method: "POST",
|
||||
body: formData,
|
||||
|
@ -16,27 +17,47 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
output.innerHTML = result.msg;
|
||||
output.style.display = "block";
|
||||
if (result.questions) setTimeout(function () {
|
||||
window.addEventListener('beforeunload', function (e) { e.preventDefault(); });
|
||||
contentHTML = "<form id='test'>";
|
||||
console.log(result.questions); // DEBUG
|
||||
i = 0;
|
||||
testLenght = result.questions.length;
|
||||
testLength = result.questions.length;
|
||||
result.questions.forEach(question => {
|
||||
contentHTML +=
|
||||
`<div class="question">
|
||||
<h4>Pytanie ${++i}/${testLenght} <sub>w bazie nr ${question.QID}</sub></h4>
|
||||
contentHTML +=
|
||||
`<div class="question">
|
||||
<h4>Pytanie ${++i}/${testLength} <sub>w bazie nr ${question.QID}</sub></h4>
|
||||
<h3>${question.content}</h3>
|
||||
<div class="answer">
|
||||
<input type="radio" name="${question.QID}" value="A"/>${question.answerA}<br/>
|
||||
<input type="radio" name="${question.QID}" value="B"/>${question.answerB}<br/>
|
||||
<input type="radio" name="${question.QID}" value="C"/>${question.answerC}<br/>
|
||||
<input type="radio" name="${question.QID}" value="D"/>${question.answerD}<br/>
|
||||
<input type="hidden" name="${"q"+question.QID}" value="${i}"/>
|
||||
<input type="hidden" name="${question.QID}" value="-"/>
|
||||
<input type="radio" name="${question.QID}" value="A"/><b>A.</b> ${question.answerA}<br/>
|
||||
<input type="radio" name="${question.QID}" value="B"/><b>B.</b> ${question.answerB}<br/>
|
||||
<input type="radio" name="${question.QID}" value="C"/><b>C.</b> ${question.answerC}<br/>
|
||||
<input type="radio" name="${question.QID}" value="D"/><b>D.</b> ${question.answerD}<br/>
|
||||
</div>
|
||||
</div>`;
|
||||
});
|
||||
contentHTML += `
|
||||
<p>Zapisać wynik? <input type="checkbox" name="save"/><br/><input type="submit" value="Zakończ Test"/></p>
|
||||
contentHTML += `<p>`;
|
||||
if (logged) contentHTML += `Zapisać wynik? <input type="checkbox" name="save"/><br/>`;
|
||||
if (logged && !own) contentHTML += `Zapisać w rankingu? <input type="checkbox" name="rank"/>`;
|
||||
contentHTML += `</p>
|
||||
<input type="submit" value="Zakończ Test"/>
|
||||
</form>`;
|
||||
mainContent.innerHTML = contentHTML
|
||||
mainContent.innerHTML = contentHTML;
|
||||
document.getElementById("test").addEventListener("submit", async function (formE) {
|
||||
formE.preventDefault();
|
||||
formData = new FormData(formE.target);
|
||||
formData.append("testEnd", "true");
|
||||
const response = await fetch("test.php", {
|
||||
method: "POST",
|
||||
body: formData,
|
||||
credentials: "include",
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
}
|
||||
});
|
||||
const result = await response.json();
|
||||
console.log(result);
|
||||
});
|
||||
}, 300);
|
||||
});
|
||||
});
|
|
@ -4,7 +4,7 @@ if (!checkLogin()) {
|
|||
jsonMsg("Nie jesteś zalogowany");
|
||||
exit();
|
||||
}
|
||||
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST["testLength"])) {
|
||||
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST["testStart"])) {
|
||||
if ($_POST["testLength"] > 100)
|
||||
jsonMsg("Test nie może być dłuższy niż 100 pytań");
|
||||
$conn = connectDB();
|
||||
|
@ -39,5 +39,24 @@ if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST["testLength"])) {
|
|||
$conn->close();
|
||||
$result["msg"] = "Wygenerowano " . count($result["questions"]) . " pytań";
|
||||
echo json_encode($result);
|
||||
} else if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST["testEnd"])) {
|
||||
$allTestAnswers = [];
|
||||
$answersQIDs = [];
|
||||
foreach ($_POST as $key => $value) {
|
||||
if (in_array($key, ["save", "rank", "testEnd", "testLenght"]) || !is_numeric($key)) continue;
|
||||
$allTestAnswers[(int)$key] = ["ans" => $value, "pos" => $_POST["q$key"], "cor" => false];
|
||||
$answersQIDs[] = (int)$key;
|
||||
}
|
||||
$conn = connectDB();
|
||||
$filler = implode(",", array_fill(0, count($allTestAnswers), "?"));
|
||||
$stmt = $conn->prepare("SELECT QID, answerChar FROM questions WHERE QID IN ($filler)");
|
||||
$types = str_repeat("i", count($allTestAnswers));
|
||||
$stmt->bind_param($types, ...$answersQIDs);
|
||||
$stmt->execute();
|
||||
$stmt->bind_result($QID, $answerChar);
|
||||
while ($stmt->fetch()) if ($answerChar==$allTestAnswers[$QID]["ans"]) $allTestAnswers[$QID]["cor"] = true;
|
||||
$stmt->close();
|
||||
$conn->close();
|
||||
echo json_encode($allTestAnswers);
|
||||
} else
|
||||
jsonMsg("Nieprawidłowy request");
|
Loading…
Add table
Reference in a new issue