Zeitmessung trotz erneutem Seitenaufruf

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeitmessung trotz erneutem Seitenaufruf

    Hallo Forum,

    ich stehe hier vor einem kleinen Problem. Suche eigentlich kein script, sondern eine Idee, einen Lösungsansatz.

    Es geht darum, dass ich kleines Quiz erstellen möchte. Soll so ablaufen : Der Spieler klickt einen Start-Button an. Daraufhin wird eine Uhr gestartet und eine neue Datei aufgerufen. Es wird eine Aufgabe angezeigt und sobald die richtige Lösung angekreuzt, eingetragen oder was auch immer wurde und ein button "weiter" geklickt wurde, wird die Datei erneut aufgerufen mit einer neuen Aufgabe.

    Nun würde ich gerne die Zeit messen, die der Spieler von Start bis Ende (oder bis Abbruch) für die Aufgaben benötigt hat. Aber ich habe atm echt keine Ahnung, wie ich das anstellen soll.

    Die Zeiten während des erneuten Ladens der Datei soll ja nicht mitgerechnet werden, sondern nur die Zeit, die der Spieler zum durchlesen und beantworten der Fragen / Aufgaben benötigt.

    Kann mir da irgendwer einen Lösungsansatz nennen ?

  • #2
    - timestamps in der session
    - cookies

    gewisse rundungsfehler musst du in kauf nehmen, da du die exakte zeit, bis die seite beim user "aufschlägt", kaum genau ermitteln kannst.

    alternative dazu: beschäftige dich mit ajax und kombiniere es mit php.

    *verschieb zu bs*
    Kissolino.com

    Kommentar


    • #3
      Du könntest du Startzeit doch irgendwo speichern (Session, Datenbank, File) und dann auslesen und die Ladezeit abziehen. ODer denke ich jetzt zu einfach?

      Kommentar


      • #4
        @Wurzel : Mit Ajax hatte ich bisher noch rein gar nichts zu tun, werde es mir aber mal ansehen - das mit den cookies und den timestamps lass ich mir morgen gleich als erstes genauer duch den Kopf gehen

        @Heini81 : Von der Sache her hört sich das ja prima an, aber wie ermittle ich die Ladezeit ? Ist ja so, dass der Eine z.B. eine superschnelle Anbindung ans Netz hat, während der Andere mit einer lahmen ISDN-Verbindung auskommen muss. Diese Differenz mal, sagen wir, 100 Aufgaben dürften schon einige Sekunden, unter Umständen sogar Minuten betragen.

        Ich danke euch beiden jedenfalls erstmal für die Antworten und lass mir das alles morgen mal durch den Kopf gehen. Meine Lösung - insofern ich eine sinnvolle und nachgewiesenermassen korrekt funktionierende find - poste ich dann hier.

        Kommentar


        • #5
          ajax war viell. etwas vorschnell ( schei** modewort). wenn du es an (einfaches) javascript koppelst
          - setze am ende der seite einen js-aufruf, der einen timer startet
          - schreibe die verstrichene zeit in ein hidden-field

          nachteil: du bist an js gebunden, bei ajax allerdings auch.
          Kissolino.com

          Kommentar


          • #6
            Und natürlich sollte bedacht werden, dass die clientseitige Ermittlung der Zeitpunkte das Schummeln recht einfach macht.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Bin leider gerade erst heimgekommen und wollte mir nun meine Gedanken machen. Dummerweise hab ich festgestellt, dass ich scheinbar keine Session-werte ändern kann, oder wenigstens nicht so, wie ich es gerne hätte (sollte ich klären, bevor ich mit timestamps in der session beginne ).

              Ich wollte ursprünglich alle Ergebnisse in einem array speichern per array_push. Dass das nicht klappt, ist klar, weil das array ja bei jedem erneuten Laden der Datei wieder "geleert" wird.

              Also dachte ich mir, speichere ich die Werte einfach in einer session.

              Nur haut das irgendwie nicht hin. Hier mal ein Teil meiner Datei :

              PHP-Code:
              $alleergebnisse = array();
              .
              .
              .
              foreach(
              $_SESSION["alleergebnisse"] as $zahl
              {
              array_push($alleergebnisse$zahl);
              }
              .
              .
              .
              $ergebnis $_POST[ergebnis];
              array_push($alleergebnisse$ergebnis);
              .
              .
              .
              $_SESSION["alleergebnisse"] = $alleergebnisse;
              $anzahlberechnungen count($_SESSION["alleergebnisse"]);
                      for (
              $i 0$i $anzahlberechnungen$i++)
                        {
                        echo 
              "<tr><td>".$_SESSION["alleergebnisse"][$i]."</td></tr>";
                        } 
              Eigentlich sollte es so ablaufen : Die Werte in $_SESSION["alleergebnisse"] werden ausgelesen und in das Array alleergebnisse geschrieben. Anschliessend wird der mittels $_POST übergebene Wert dem Array hinzugefügt (beim ersten Aufruf passiert da nichts, hatte ja noch keinen Button geklickt). Danach sollen die Werte des Arrays wieder in die Session geschrieben werden.
              Beim absenden des Ergebnisses (Button "nächste Aufgabe" anklicken) hab ich ja dann nach $_POST einen Wert im Array, der wird auch korrekt in die Session eingetragen. Aber nach jedem erneuten Laden und Ausgeben des Inhaltes der Session ist nur der neuste Wert vorhanden. Ganz so, als hätte ich rein mit einem Array und array_push gearbeitet.

              Hab ich was missverstanden oder einfach nur irgendwo einen Fehler im Script ? Hab das Ding jetzt x-mal auf Fehler untersucht, aber ich finde ihn einfach nicht

              Kommentar


              • #8
                Original geschrieben von Tommy75
                Die Werte in $_SESSION["alleergebnisse"] werden ausgelesen und in das Array alleergebnisse geschrieben. Anschliessend wird der mittels $_POST übergebene Wert dem Array hinzugefügt (beim ersten Aufruf passiert da nichts, hatte ja noch keinen Button geklickt). Danach sollen die Werte des Arrays wieder in die Session geschrieben werden.
                Warum so umständlich?

                Wenn $_SESSION["alleergebnisse"] bereits ein Array ist - warum fügst du dann nicht gleich dort den neuen Wert hinzu?

                Das hin -und herkopieren kannst du dir doch sparen.

                Merken: Elemente in $_SESSION sind absolut nichts anderes, als ganz normale Variablen - mit dem einzigen Unterschied, dass sie beim Wiederaufnehmen der Session im Folgescript automatisch wieder zur Verfügung gestellt werden.

                Aber nach jedem erneuten Laden und Ausgeben des Inhaltes der Session ist nur der neuste Wert vorhanden. Ganz so, als hätte ich rein mit einem Array und array_push gearbeitet.
                Warum hast du nicht wengistens mal kontrolliert, was $_SESSION["alleergebnisse"] nach dem Abschicken deines Formulars überhaupt enthält ...?
                print_r($_SESSION["alleergebnisse"]);



                Hast du die Session überhaupt wieder aufgenommen ...?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zu den einzelnen Punkten :

                  1. Hast vollkommen recht, das sollte ich überarbeiten
                  2. print_r($_SESSION["alleergebnisse"]); zeigt mir immer nur das vorhergehende Ergebnis an (wenn ich das an den Anfang des scriptes setze) oder das aktuelle Ergebnis (wenn print_r... am Ende steht.
                  Sieht dann so aus :

                  Array ( [0] => 55 )

                  Das Array enthält also immer nur einen Wert, sonst müsste bei key 0 der Wert ja konstant bleiben; der angezeigte Wert sollte ja an letzter Stelle im Array stehen.

                  Vielleicht sollte ich dazu sagen, dass es sich bei "Wert" um das Ergebnis einer Rechenaufgabe handelt.

                  3. Verstehe nicht ganz, was du mit "Session wieder aufgenommen" meinst

                  Kommentar


                  • #10
                    Oh man..... hat sich erledigt. Ich hab zwar keine Ahnung, was nun falsch war, aber nachdem ich Schritt 1 ausgeführt habe (das "doppelte" Array entfernt) geht alles einwandfrei

                    Hab jetzt einfach, wie du sagtest, direkt die Session gepusht - perfekt

                    Kommentar

                    Lädt...
                    X