Show sourcecode
The following files exists in this folder. Click to view.
api/
createroom.php
createtables.php
createuser.php
css/
dbconnection.php
game.php
index.php
login.php
logout.php
remove.php
rensa.php
results.php
waiting.php
game.php
88 lines UTF-8 Windows (CRLF)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/stylesheet.css" rel="stylesheet">
<title>Film Quiz</title>
<?php
include("dbconnection.php");
/** @var PDO $dbconn */
$room_id = $_SESSION['room_id'];
$user_id = $_SESSION['user_id'];
$username = $_SESSION['username'];
// Gå till loginsida om ingen är inloggad
if ($username === null) {
header("Location: login.php");
exit;
}
?>
</head>
<body>
<h2>Runda <span id="round">1</span> / 10</h2>
<br>
<h3>Scores:</h3>
<div id="scores"></div>
<br>
<p>Tid kvar: <span id="countdown">10</span>s</p>
<img id="backdrop" src="" style="width:100%; max-width:800px;">
<br><br>
<form type="post" onsubmit="event.preventDefault(); submitGuess()">
<input type="text" id="guess">
<button type="submit">Svara</button>
</form>
<p id="message"></p>
<p>Alla titlar är på engelska, även svenska filmer</p>
<script>
const room_id = <?php echo json_encode($room_id); ?>;
const user_id = <?php echo json_encode($user_id); ?>;
let lastRound = 0;
// Kolla api/gamestate.php varje sekund om tiden gått ut
setInterval(async () => {
const res = await fetch(`api/gamestate.php?room_id=${room_id}`);
const state = await res.json();
updateUI(state);
}, 1000);
// Om spelare anger ett svar, ropa på api/gamestate.php med POST
async function submitGuess() {
const guess = document.getElementById('guess').value;
const res = await fetch('api/gamestate.php', {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: `room_id=${room_id}&user_id=${user_id}&guess=${encodeURIComponent(guess)}`
});
const state = await res.json();
updateUI(state);
}
// Funktion som skriver ut nuvarande status
function updateUI(state) {
document.getElementById('round').textContent = state.round;
document.getElementById('countdown').textContent = state.time_left;
// Töm om det är en ny runda
if (state.round !== lastRound) {
document.getElementById('backdrop').src = state.backdrop;
document.getElementById('guess').value = '';
document.getElementById('message').textContent = '';
lastRound = state.round;
}
if (state.message) {
document.getElementById('message').textContent = state.message;
}
if (state.status === 'finished') {
window.location.href = 'results.php';
}
if (state.scores) {
document.getElementById('scores').innerHTML = state.scores
.map(s => `<p>${s.username}: ${s.points} poäng</p>`).join('');
}
}
</script>
</body>
</html>