S
Sempervivum
Well-known member
- Beiträge
- 760
- Punkte Reaktionen
- 125
In dem was online ist finde ich weder den Button noch das addEventlistener.
<button type="button" id="start-it" onclick="NextQuestion(0)">Quiz beginnen</button>
fwrite ( $file, $_GET['email'] . "|" . $_GET['name'] . PHP_EOL);fwrite ( $file, $_POST['email'] . "|" . $_POST['name'] . "|" . $_POST['wrong-answers'] . "|" . $_POST['right-answers'] . PHP_EOL);fetch('saveit.php', {
Da ist ein </body> zu viel und index.js wird nicht gefunden, das solltest Du also löschen.Und was mir noch nicht klar ist: in der Datei index.html ist Zeile 109: ./script.js. Stimmt das da?
</main>
<script src="index.js"></script>
<!-- </body> muss raus -->
<!-- partial -->
<script src="./script.js"></script>
</body>
</html>
<?php
$filename = "file.csv";
if ( isset($_POST['email']) and $_POST['email'] <> "" )
{
$file=fopen($filename,"a");
// schreiben des Inhaltes von email
fwrite ( $file, $_POST['email'] . "|" . $_POST['name'] . "|" . $_POST['wrong-answers'] . "|" . $_POST['right-answers'] . PHP_EOL);
// Datei schließen
fclose($file);
echo "Danke - Ihre Daten wurden speichert";
// Datei wird nicht weiter ausgeführt
exit;
}
?>
<form action="saveit.php" method="post">
<p>Ihre E-Mail-Adresse<br>
<input type="Text" name="email"></p>
<p>Name:<br>
<input type="Text" name="name"></p>
<input type="Submit" name="" value="speichern">
</form>
<?php
$filename = "thread1098-quiz-saveit.csv";
if (
isset($_POST['email']) and $_POST['email'] <> "" and
isset($_POST['email']) and $_POST['email'] <> "" and
isset($_POST['wrong-answers']) and $_POST['wrong-answers'] <> "" and
isset($_POST['right-answers']) and $_POST['right-answers'] <> ""
) {
$file = fopen($filename, "a");
// schreiben des Inhaltes von email
fwrite($file, $_POST['email'] . "|" . $_POST['name'] . "|" . $_POST['wrong-answers'] . "|" . $_POST['right-answers'] . PHP_EOL);
// Datei schließen
fclose($file);
echo "Danke - Ihre Daten wurden gespeichert";
}
// function for when all questions being answered
function handleEndGame() {
let remark = null
let remarkColor = null
// condition check for player remark and remark color
if (playerScore <= 3) {
remark = "Bad Grades, Keep Practicing."
remarkColor = "red"
}
else if (playerScore >= 4 && playerScore < 7) {
remark = "Average Grades, You can do better."
remarkColor = "orange"
}
else if (playerScore >= 7) {
remark = "Excellent, Keep the good work going."
remarkColor = "green"
}
const playerGrade = (playerScore / 10) * 100
//data to display to score board
document.getElementById('remarks').innerHTML = remark
document.getElementById('remarks').style.color = remarkColor
document.getElementById('grade-percentage').innerHTML = playerGrade
document.getElementById('wrong-answers').innerHTML = wrongAttempt
document.getElementById('right-answers').innerHTML = playerScore
document.getElementById('score-modal').style.display = "flex"
// !!! Hier ist der richtige Ort, um das Ergebnis des Spiels
// zum Server zu schicken.
// Die DOM-Elemente der Eingabefelder bereit stellen:
const
inputEmail = document.querySelector('input[name="email"]'),
inputName = document.querySelector('input[name="name"]');
// Das Senden kapseln wir in einer Funktion:
function sendIt() {
// Neues FormData-Objekt erzeugen:
const params = new FormData();
// ... und die Werte aus den Eingabefeldern dort eintragen:
params.append('email', inputEmail.value);
params.append('name', inputName.value);
// ... und das Ergebnis des Spiels:
params.append('wrong-answers', wrongAttempt);
params.append('right-answers', playerScore);
// Parameter mit der Methode POST an das Skript saveit.php schicken:
fetch('thread1098-quiz-saveit.php', {
method: 'post',
body: params
})
// !!! Die Antwort vom Server brauchen wir zunächst nicht
/*.then(res => {
// Die Antwort vom Server wird als Text ausgewertet:
return res.text();
}).then(res => {
// Antwort vom Server in der Console ausgeben:
console.log(res);
// ... und in HTML-Element eintragen:
document.getElementById('out').innerHTML = res;
})*/;
}
sendIt(); // !!! Dies fehlte
}
document.querySelector('#send-it').addEventListener('click', event => {
document.querySelector('.game-quiz-container').style.display = 'flex';
NextQuestion(0);
});
Ja natürlich, wir müssen nur die Eingaben validieren. Ich zeige dir später wie es geht. Ebenso bei den anderen Fragen.Gibt es die Möglichkeit, dass er erst beginnt, wenn Username und Mail eingetragen sind?