Ich erstelle ein kleines Quizspiel mit Bottle und habe einige Probleme. Die Seite wird geladen, eine zufällige Trivia-Frage wird aus der Datenbank abgerufen und im Browser angezeigt. Der Server versucht automatisch, den Wert aus der Formulareingabe abzurufen, wenn die Seite geladen wird und die Eingabe leer ist (keine Überraschung). Aber wenn ich versuche, die Antwort auf die Quizfrage in das Eingabefeld einzugeben und auf die Schaltfläche "Senden" zu klicken, wird die Seite neu geladen und es wird die nächste Quizfrage aus der Datenbank angezeigt. Meine Benutzereingabe stimmt nie mit der aktuellen Quizfrage überein, da sie immer den Wert der vorherigen Frage enthält.Benutzereingaben auswerten, bevor eine neue Datenbankabfrage durchgeführt wird
Wie bekomme ich den Wert aus der Benutzereingabe für diese bestimmte Datenbankabfrage, ohne dass die Seite beim Senden neu geladen wird und eine neue zufällige Abfrage generiert wird?
In meiner game.py
Datei:
@app.route("/game", method=["POST"])
def game(db):
db.execute("select * from questions order by rand() limit 1")
data = db.fetchall()
guess = ""
name = ""
for d in data:
country_name = d["name"]
if request.POST.the_guess:
guess = request.POST.the_guess.strip()
return bottle.template("temp", data=data)
Und in meinem temp.tpl
:
<form method="POST" action="/game"> <input type="text" name="the_guess"> <input type="submit" value="guess"> </form>
Sie sollten die Frage ID in eine versteckte Eingabe in das Formular. Dann erhalten Sie die Schätzung und die ID von 'request.POST', und eine Datenbankabfrage, um zu sehen, ob die Antwort Übereinstimmungen mit dieser ID. – Barmar
Was ich festgestellt habe, ist, wenn ich das Formular abschicke, löscht es alle Werte in meiner Server-Datei. Ich bin nicht, was los ist. –
Sie meinen, es löscht alles aus der Datenbanktabelle? – Barmar