Antwort der Frage bestimmt die URL-Weiterleitung
Pattis
- formulare
- seitenbewertung
- sonstiges
Hallo, ich möchte auf einer Seite eine Art Quiz machen.
Gibt man in ein oder mehreren Eingabefelder den richtigen Wert ein so soll auf eine bestimmte URL geleitet werden. Ist die Antwort falsch so soll ein Komentar eingeblendet werden und der Besucher soll eine erneute Möglichkeit der richtigen Eingabe haben.
Kann mir geholfen werden?
viele Grüße und besten Dank voraus!
Michael
Hallo Pattis,
Hallo, ich möchte auf einer Seite eine Art Quiz machen.
Kann eine unterhaltsame Idee sein.
Gibt man in ein oder mehreren Eingabefelder den richtigen Wert ein so soll auf eine bestimmte URL geleitet werden. Ist die Antwort falsch so soll ein Komentar eingeblendet werden und der Besucher soll eine erneute Möglichkeit der richtigen Eingabe haben.
Kann mir geholfen werden?
Da bieten sich zwei Möglichkeiten an, serverbasiert also zb. PHP oder Clientseitig zb. Javascript. Das hängt davon ab, wie sicher das Quiz sein soll, nur als harmlose Spielerei oder Manipulationssicher. Meist beantwortet sich die Frage schon, wenn es nichts zu gewinnen gibt und das Quiz beliebig wiederholt werden kann. Wie ist das bei dir?
Gruss
Henry
Es ist nur eine kleine Spielerei. Ich dachte an ein Formularfeld welches den Wert des Inhaltes prüft. Die Antwort kann auch im Quelltext stehen wäre auch nicht schlimm.
Hallo,
dann die nächste Frage: Womit kennst du dich besser aus bzw. was ist dir lieber? Javascript, PHP, …?
Evtl. ist das hier auch etwas für dich.
Gruß
Jürgen
Hallo Jürgen,
vielen Dank schon mal. Die Antwort lautet eher PHP. Also vielleicht ein oder mehrere Formularfelder, dann ein sendebutton und mit senden wird der Inhalt geprüft. Ist der Inhalt mit dem von mir hinterlegten richtig gehe zu URL...\richtige-Antwort.php und ist die Antwort Falsch dann eine Nachricht oder gehe zu URL...\falsche-Antwort.php
Gruß Michael
Tach!
Die Antwort lautet eher PHP. Also vielleicht ein oder mehrere Formularfelder, dann ein sendebutton und mit senden wird der Inhalt geprüft. Ist der Inhalt mit dem von mir hinterlegten richtig gehe zu URL...\richtige-Antwort.php und ist die Antwort Falsch dann eine Nachricht oder gehe zu URL...\falsche-Antwort.php
Wenn du erst auf dem Server auswertest, welche Antwort richtig ist, weißt du am Client noch nicht, zu welcher URL es weitergehen soll. Du kannst also nur das Formular zu einer festen Adresse senden. Es ist allerdings ungünstig, wenn das Ziel die Seite der nächsten Frage ist, weil du einerseits im Fehlerfall wieder zurückspringen muss, andererseits die nächste Frage nichts mit der vorhergehenden zu tun hat und die Auswertung der Antwort dort eigentlich nichts zu suchen hat. Besser ist eine Technik namens Affenformular. Das Formular mit der Frage wird zur selben Seite gesendet. Hier wird es ausgewertet und im Fehlerfall das Formular erneut angezeigt. Im Gut-Fall ist die Antwort eine HTTP-Weiterleitung zur nächsten Frage. So bleibt Frage und Auswertung beieinander.
dedlfix.
Hallo, das klingt schon mal gut mit dem Affenformular wie würde der Code von einem Beispiel aussehen? VG
Hilfe zur Selbsthilfe bezüglich der Weiterleitung:
https://www.php.net/manual/en/function.header.php
Alles andere ist im Kern ein Frage von if … then … else. Wenn Du ein wenig PHP kannst, dann solltest Du das hinbekommen.
wie würde der Code von einem Beispiel aussehen?
In einem Editor mit Syntaxhighlighting? "Schön bunt".
Grundlage für Zitat #2508.
Hallo Pattis,
Es ist nur eine kleine Spielerei. Ich dachte an ein Formularfeld welches den Wert des Inhaltes prüft. Die Antwort kann auch im Quelltext stehen wäre auch nicht schlimm.
Da würde eigentlich ein Javascript ausreichen. Aber wie ich deinen weiteren Antworten heir entnehmen kann, würdest du schon PHP bevorzugen. Eingentlich ziemlich simple in der Grundkonstruktion, zumal es ja nicht um Sicherheit geht. Das Beispiel soll dir nur die einfache Vorgehensweise erklären.
Beachte, dass header('Location: http://www.example.com/'); nur funktioniert, wenn noch kein andere Ausgabe erfolgt ist, auch keine Leerzeichen, innerhalb PHP sind die Leerzeichen egal.
<?php
if( isset($_GET['antwort']) && is_numeric($_GET['antwort']) )
{
// is_numeric nur zur Sicherheit, daher auch die Antwort als Zahl deklariert
if($_GET['antwort'] == 2)
{
header('Location: http://www.example.com/');exit;
}
else{echo '<h2>Die Antwort war falsch</h2>';}
}
?><!DOCTYPE html>
<html>
<body>
<h1>Was ist das beste Forum?</h1>
<form>
<input type="radio" name="antwort" value="2"> SelfHtml
<hr>
<input type="radio" name="antwort" value="1"> Keine Ahnung
<hr>
<input type="submit">
</form>
</body>
</html>
Gruss
Henry
Hallo, das sieht schon ganz gut aus. Nur möchten ich kein type="radio" sonder type="text" und dann soll die Prüfung erfolgen. Ich habe es versucht aber komme nicht zum Ergebnis.
vg und Danke
Also ich habe das so angepasst wie ich es fast brauche:
<?php
if( isset($_GET['antwort']) )
{
// is_numeric nur zur Sicherheit, daher auch die Antwort als Zahl deklariert
if($_GET['antwort'] == "Berlin")
{
echo 'Richtige Antwort hier geht es weiter!';
echo '<a href="http://meinlinkiel"><button>Hier geht es weiter!</button></a>';
}
else{echo '<h2>Die Antwort war falsch</h2>';}
}
?><!DOCTYPE html>
<html>
<body>
<h1>Wie heist die Hauptstadt Deutschlands?</h1>
<form>
<input type="text" name="antwort" value="">
<hr>
<input type="submit">
</form>
</body>
</html>
Jetzt würde ich nur noch auf die Gross und Kleinschreibung verzichten und gern den ausgegebenen Wert wo anders plazieren.
VG
Hallo Pattis,
Also ich habe das so angepasst wie ich es fast brauche:
Jetzt würde ich nur noch auf die Gross und Kleinschreibung verzichten und gern den ausgegebenen Wert wo anders plazieren.
Dann machs so:
if(mb_strtolower($_GET['antwort']) == mb_strtolower('BeRliN') )
Dann ist egal wie du und der Antwortende es schreibst.
Gruss
Henry
@@Henry
Das Markup ist kaputt:
<!DOCTYPE html> <html> <body> <h1>Was ist das beste Forum?</h1> <form> <input type="radio" name="antwort" value="2"> SelfHtml <hr> <input type="radio" name="antwort" value="1"> Keine Ahnung <hr> <input type="submit"> </form> </body> </html>
Ich repariere das mal:
<html lang="de">
<head>
<meta charset="utf-8" />
<title>Was ist das beste Forum?</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
hr
). Wenn bei der visuellen Ausgabe Linien gewünscht sind, ist das Sache von CSS.button
-Element. type="submit"
ist default, kann also auch weggelassen werden. <h1>Was ist das beste Forum?</h1>
<form>
<label>
<input type="radio" name="antwort" value="2"> SelfHtml
</label>
<label>
<input type="radio" name="antwort" value="1"> Keine Ahnung
</label>
<button type="submit">Weiter</button>
</form>
Nun sind zwar die Antworten beschriftet, die Frage allerdings steht nicht dabei, sondern ganz woanders.
fieldset
mit zugehöriger Beschriftung gut aufgehoben: <h1>Was ist das beste Forum?</h1>
<form>
<fieldset>
<legend>Was ist das beste Forum?</legend>
<label>
<input type="radio" name="antwort" value="2"> SelfHtml
</label>
<label>
<input type="radio" name="antwort" value="1"> Keine Ahnung
</label>
</fieldset>
<button type="submit">Weiter</button>
</form>
Die Dopplung von „Was ist das beste Forum?“ soll natürlich nicht so sein. Womöglich ist das gar nicht die Seitenüberschrift, sondern <h1>Ein kleines Quiz</h1>
?
Ansonsten könnte es vielleicht auch so gehen (ungetestet):
<h1 id="heading">Was ist das beste Forum?</h1>
<form>
<fieldset aria-labelledby="heading">
<label>
<input type="radio" name="antwort" value="2"> SelfHtml
</label>
<label>
<input type="radio" name="antwort" value="1"> Keine Ahnung
</label>
</fieldset>
<button type="submit">Weiter</button>
</form>
LLAP 🖖
@@Gunnar Bittersmann
<h1 id="heading">Was ist das beste Forum?</h1> <form> <fieldset aria-labelledby="heading">
Auf das Naheliegendste kommt man™ natürlich nicht. Wozu hat man denn Freunde? 😉
<form>
<fieldset>
<legend><h1>Was ist das beste Forum?</h1></legend>
„HTML ist meistens einfach. Zumindest einfacher als ARIA. 😁“ —Marco Zehe
LLAP 🖖
Hi,
<legend><h1>Was ist das beste Forum?</h1></legend>
Ich würd ja eher "Welches" statt "Was" schreiben in diesem Zusammenhang.
cu,
Andreas a/k/a MudGuard
Hallo
<legend><h1>Was ist das beste Forum?</h1></legend>
Ich würd ja eher "Welches" statt "Was" schreiben in diesem Zusammenhang.
Das heißt „Wie bitte?“ und nicht „Was?“. Also:
<legend><h1>Wie bitte ist das beste Forum?</h1></legend>
*scnr*
Tschö, Auge
@@Auge
<legend><h1>Was ist das beste Forum?</h1></legend>
Ich würd ja eher "Welches" statt "Was" schreiben in diesem Zusammenhang.
Das heißt „Wie bitte?“ und nicht „Was?“.
Da fehlen Kommas Kommata!!1elf
<legend><h1>Wie, bitte, ist das beste Forum?</h1></legend>
LLAP 🖖
Hej Gunnar,
@@Gunnar Bittersmann
Auf das Naheliegendste kommt man™ natürlich nicht. Wozu hat man denn Freunde? 😉
<form> <fieldset> <legend><h1>Was ist das beste Forum?</h1></legend>
ich bin auch so ein man™. Wie oft in meinem Leben habe ich schon so etwas geschrieben:
legend {[…]}
fieldset fieldset legend {[…]}
fieldset fieldset fieldset legend {[…]}
Wie viel einfacher, eleganter und besser lesbar ist dagegen
form h1 {[…]}
form h2 {[…]}
form h3 {[…]}
Marc
Hallo Gunnar,
alles richtig, was du hier schreibst. Aber es ging nur um ein kleines Beispiel zum Scriptablauf, nicht wie erstelle ich komplettes HTML.
Ich denke mal das -1 kam nicht von dir(?), weil du machst dir die Mühe ja auch nicht immer in deinen Beispielen.
Gruss
Henry
@@Henry
alles richtig, was du hier schreibst. Aber es ging nur um ein kleines Beispiel zum Scriptablauf, nicht wie erstelle ich komplettes HTML.
Du hattest aber komplettes HTML in deinem Beispiel. Und wenn man ein Beispiel gibt, dann sollte das so sein, dass andere sich daran auch ein Beispiel nehmen können.
Andere verfügen nicht unbedingt über den Hintergrund zu entscheiden, welchen Teil sie davon verwenden sollten und welchen nicht; sie verwenden alles. Und deshalb sollte ein Beispiel komplett richtig sein.
Bei einem Beispiel mit schlechtem Markup kann der Scriptablauf noch so gut sein; es kommt am Ende schlechtes Markup heraus. Schlecht für die Nutzer. Deshalb kann ich „Aber es ging nur um ein kleines Beispiel zum Scriptablauf“ so nicht durchgehen lassen. Es geht um das Ganze, was für Nutzer rauskommt.
Ich denke mal das -1 kam nicht von dir(?)
Nochmal nachgekuckt: doch, kam es. Aus ebengenanntem Grund.
weil du machst dir die Mühe ja auch nicht immer in deinen Beispielen.
Oops? Dann bitte ich auch um −1, wenn ich’s nicht besser verdient habe.
LLAP 🖖
Ich denke mal das -1 kam nicht von dir(?), weil du machst dir die Mühe ja auch nicht immer in deinen Beispielen.
Vermutlich war es lediglich eine Person welche nicht gänzlich grundlos befürchtet, dass sich Dein Beispiel mitsamst den, unzweifelhaft wegen des Modellcharakters von Dir in Kauf genommenen Schwächen, nach "Copy & Paste" quasi "bytegenau" auf der Webseite des Fragestellers wieder findet.
Oder jemand, der sich darüber geärgert hat, dass Du es versäumt hast, den Code mit einer kleinen Angabe "schön bunt" zu machen.
Auf überhaupt ganz und gar keinen Fall war es indes jemand, der nicht äußerst genau weiß wie zurückhaltend und vorsichtig man beim Klicken auf auch nur irgend etwas sein sollte.