PHP Formular Seite laden verhindern

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • Hallo,

    Ich will eine Art Website machen, die zufällig Vokabeln abfrägt. Die Antwort wird dann über ein Formular übergeben.

    Das Problem ist, dass, wenn ich mit einer if-Abfrage die richtige Antwort prüfen will, die Seite neu lädt, damit einen neuen Zufallswert generiert und das Ergebnis nicht überprüft werden kann.

    Ich bin noch relativ neu, also wäre es nett, wenn die Antworten einigermaßen einsteigerfreundlich sind;)

    Hier der Code:

  • Hey,


    ich verstehe grad nicht wie du das meinst.


    Zitat

    Das Problem ist, dass, wenn ich mit einer if-Abfrage die richtige Antwort prüfen will, die Seite neu lädt, damit einen neuen Zufallswert generiert und das Ergebnis nicht überprüft werden kann.

    Du legst vor dem Abesenden des Formulars schon eine Vokabel fest und diese wird dann beim neu Laden der Seite geändert. Und das Ergebnis stimmt dann nicht mit der Aufforderung, bzw. Aufgabe des Users überein?


    Dein Code gibt so mindestens die Meldung Undefined Index üb aus. Am besten du überprüfst ob das Formular abgesendet wurde. Dann erfolgt die Eingabeprüfung, Fehlerbehandlung. Desweiteren verstehe ich den Sinn deines PHP-Scripts nicht. Es sieht aufjedenfall komisch aus.


    Desweiteren ist der <font>-tag bereits veraltet. Siehe dir mal HTML5 an.


    Ebesno verweise ich mal auf dieses Tutorial: Kontaktformular Tutorial


    Gruß,

    Stef

  • Zitat

    Du legst vor dem Abesenden des Formulars schon eine Vokabel fest und diese wird dann beim neu Laden der Seite geändert. Und das Ergebnis stimmt dann nicht mit der Aufforderung, bzw. Aufgabe des Users überein?

    Im Grunde ist genau das mein Problem



    Zitat

    Des weiteren verstehe ich den Sinn deines PHP-Scripts nicht. Es sieht auf jeden Fall komisch aus.

    Also der Sinn des Skriptes soll darin bestehen, dass eine zufällige Vokabel ausgewählt und angezeigt werden soll, die der Benutzer dann übersetzen muss (also Übersetzung in das Formular eingeben) und danach soll überprüft werden, ob die Vokabel richtig übersetzt wurde


    Also wird zuerst eine Zufallszahl generiert:

    Code
    1. $min=0;
    2. $max=1;        
    3. $random = random_int($min, $max);

    Dann wird überprüft, welchen Wert diese Zufallszahl hat:

    Code
    1. if($random ==0)

    Wenn sie zum Beispiel gleich null ist, dann wird das zu übersetzende Wort ausgegeben:

    Code
    1. echo "al";

    Und danach soll überprüft werden, ob die Übersetzung stimmt, und in diesem Falle die Bestätigung ausgeben:

    Code
    1. if($üb == "zu, nach"){
    2.     echo "<font color='green'>Richtig!</font>";
    3. }

    Bei diesem Punkt hakt es, da man, nachdem das zu übersetzende Wort ausgegeben und die Übersetzung eingetippt wurde, auf den Submit-Button klicken muss. Dadurch wird die Seite neu geladen und wenn die Zufallszahl, die ja dadurch neu generiert wurde, eine andere ist, dann kommt man nicht mehr in den Algorithmus der if-Funktion der alten Zufallszahl (if($random == 0), da $random jetzt vielleicht 1 ist. Dadurch kann die Eingabe des Benutzers nicht mehr überprüft werden, da diese ja für die alte Zufallszahl und damit Vokabel ist.


    Zitat

    Desweiteren ist der <font>-tag bereits veraltet. Siehe dir mal HTML5 an.

    Mach ich;)


    Vielleicht verstehst du den Skript jetzt besser? Ich weiß nicht, wie macht man so was denn normalerweise, dass es so komisch aussieht?:)


    Danke für die schnelle Antwort

    Gruß

    Falkenauge

  • Und danach soll überprüft werden, ob die Übersetzung stimmt, und in diesem Falle die Bestätigung ausgeben:

    Code
    1. if($üb == "zu, nach"){
    2.     echo "<font color='green'>Richtig!</font>";
    3. }

    Bei diesem Punkt hakt es, da man, nachdem das zu übersetzende Wort ausgegeben und die Übersetzung eingetippt wurde, auf den Submit-Button klicken muss. Dadurch wird die Seite neu geladen und wenn die Zufallszahl, die ja dadurch neu generiert wurde, eine andere ist, dann kommt man nicht mehr in den Algorithmus der if-Funktion der alten Zufallszahl (if($random == 0), da $random jetzt vielleicht 1 ist. Dadurch kann die Eingabe des Benutzers nicht mehr überprüft werden, da diese ja für die alte Zufallszahl und damit Vokabel ist.


    kenne mich mit php nicht aus .Aber bei Javascript würde ich ein key press eventlistener einbauen der das textfeld vorher überprüft bevor du den submit button drückst. Sollte mit php wohl auch gehen.Oder nicht weil du die abfrage auf den heim rechner machen musst. Also doch java? Frag mal die anderen ich bin eine php null und kein plan wie weit php das machen kann

  • Hey,


    ok alles klar.


    Das Script verstehe ich ja. Das ist ja nicht das Problem. Nur die Abfragen sahen sehr merkwürdig aus. Wer üperprüft denn, dass ne Variable gleich zu,nach ist. Das sind dann wohl Platzhalter für die richtigen Begriffe?


    Für was brauchst du denn das random ? Den Sinn verstehe ich nicht.


    Ich werde dir mal was basteln. Habe schon ne Idee.


    Gruß,

    Stef

  • Zitat

    Für was brauchst du denn das random ?

    Man hat meinetwegen eine random-Zahl zwischen 0 und 50. Für jeden dieser Werte, also 0, 1, 2, 3... "speichere" ich eine Vokabel. Also wenn der random gleich null ist, dann wird die Vokabel "al" ausgegeben, deren deutsche Übersetzung "zu, nach" ist. Der Random soll gewährleisten, dass eine zufällige Vokabel ausgesucht wird, da man Vokabeln so nachweislich besser lernen kann. Im Code oben hab ich das beispielhaft für 2 Vokabeln darstellen wollen.

    Zitat

    Wer üperprüft denn, dass ne Variable gleich zu,nach ist

    Die Vokabel "al" heißt auf deutsch "zu, nach", das heißt, wenn der random 0 ist, wird al ausgegeben und überprüft, ob der User die richtige Übersetzung, nämlich zu, nach eingegeben hat.

    Zitat

    Ich werde dir mal was basteln. Habe schon ne Idee.

    Danke:)


    Gruß

    Falkenauge

  • Eine Idee habe ich auch: Eine Sessionvariable führen mit dem Status. Dieser kann zwei Zustände haben:

    1. Vokabel anbieten

    2. Eingabe des Benutzers prüfen

    Zufallswert ermitteln machst Du dann nur bei 1, damit ist das ursprünglich Problem gelöst, dass bei der Prüfung der Zufallswert erneut ermittelt wird.

  • Hey,


    hier ist ein Beispiel von mir zum Vokabelquiz: