Problem bei Auswertung

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

  • Problem bei Auswertung

    Hallo,

    ich hab mir dank vieler tutorials ein Gewinnspiel bauen können. Die Fragen werden über eine Textdatei eingelesen. Hat man alle Fragen beantwortet, erfolgt die Auswertung. Z.B.: "Sie haben 3 von 5 richtig beantwortet"

    Ich versuche schon seit tagen die Auswertung umzustellen.
    Ich in unzähligen Foren gestöbert, aber nix gefunden.
    Ich versuche die Auswertung so umzustellen: "Richtig beantwortet 3, Falsch beantwortet 2, Trefferquote 60%"

    Hat einer von euch ein Tipp oder ein gutes tutorial, denn ich steh momentan voll auf dem Schlau...

    Hier meine php-datei:
    PHP-Code:
    <?php

    # Ab wieviel Punkte in die Bestenliste eintragen lassen?
    $level_0 4;
    $level_1 1;

    $quizfrage file("quizfragen.txt");
    $fragenanzahl count($quizfrage);
    $punkte 0;
    $quiz_nr 0;

    if (
    $_GET) {
    $quiz_nr = @$_GET[quiz];
    }
    $akt_nr $quiz_nr;
    $akt_nr++;

    echo 
    "<form name="Form" action="" . $_SERVER['PHP_SELF'] . "?quiz=$akt_nr" method="post" onSubmit="return Antwortauswahl();">\n";

    if ( 
    $quiz_nr 0) {
    $punkte = @$_POST[punkte];
    $antwort = @$_POST[antwort];
    $Letzte_Frage explode("|"$quizfrage[($quiz_nr-1)]);

    if (
    $antwort == $Letzte_Frage[7]) {
      echo 
    "Die Antwort zu der Frage <i>„$Letzte_Frage[1]“</i> ist richtig!\n";
      
    $punkte++;
    }
    else {
      echo 
    "Die Antwort zu der Frage <i>„$Letzte_Frage[1]“</i> ist falsch!<br>\n";
      echo 
    "<b>Richtig ist:</b> <i>" $Letzte_Frage[($Letzte_Frage[7]+1)] . "</i>\n";
    }
    echo 
    "<input type=hidden name="punkte" value="$punkte"><hr>\n";
    }

    if (
    $quiz_nr $fragenanzahl) {
    $Aktuelle_Frage explode("|"$quizfrage[$quiz_nr]);
    echo 
    "Frage: $Aktuelle_Frage[0]/$fragenanzahl<br><br>\n";
    echo 
    "<b>$Aktuelle_Frage[1]</b><br><br>\n";

    if(
    $Aktuelle_Frage[2] != "-"){
      echo 
    "<input type=radio value="1" name="antwort" id="lbl1"> <label for="lbl1">$Aktuelle_Frage[2]</label><br>\n";
    }
    if(
    $Aktuelle_Frage[3] != "-"){
      echo 
    "<input type=radio value="2" name="antwort" id="lbl2"> <label for="lbl2">$Aktuelle_Frage[3]</label><br>\n";
    }
    if(
    $Aktuelle_Frage[4] != "-"){
      echo 
    "<input type=radio value="3" name="antwort" id="lbl3"> <label for="lbl3">$Aktuelle_Frage[4]</label><br>\n";
    }
    if(
    $Aktuelle_Frage[5] != "-"){
      echo 
    "<input type=radio value="4" name="antwort" id="lbl4"> <label for="lbl4">$Aktuelle_Frage[5]</label><br>\n";
    }
    if(
    $Aktuelle_Frage[6] != "-"){
      echo 
    "<input type=radio value="5" name="antwort" id="lbl5"> <label for="lbl5">$Aktuelle_Frage[6]</label><br>\n";
    }

    echo 
    "<br><input type=submit value="Weiter...">\n</form>\n";
    }
    else {
    echo 
    "</form>\n";
      if (
    $punkte !="") {
       echo 
    "Sie haben <b>$punkte</b> ". ($punkte == "Frage" "Fragen") ." von <b>$fragenanzahl</b> richtig beantwortet.<br><br>\n";
      }
      if (
    $punkte <= $level_0) {
       echo 
    "
        <br><br>Text1"
    ;
      }
        if (
    $punkte >= $level_0) {
       echo 
    "
        <br><br>LEVEL 0."
    ;
      }
    }
    ?>

  • #2
    Dazu musst du doch nur diese Zeile umbauen:
    PHP-Code:
    echo "Sie haben <b>$punkte</b> ". ($punkte == "Frage" "Fragen") ." von <b>$fragenanzahl</b> richtig beantwortet.<br><br>\n"
    vorher natürlich noch die Prozente ausrechnen.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Hallo XGremliN,

      danke für die schnelle Antwort. Ich suche nur eine Anleitung bzw. eine Möglichkeit wie ich die Prozente ausrechnen kann.

      Ich hatte mir schon was zusammen gebastelt, jedoch ohne Erfolg:

      PHP-Code:
      $prozent 100;
      if (
      $punkte >= 0)
      {
      $auswertung $punkte $fragenanzahl $prozent;
      $auswertung explode (".",$auswertung);
      $auswertung $auswertung[0].",".str_pad ($auswertung[1], 2"0"STR_PAD_RIGHT);

      Wenn man alle Fragen richtig beantwortet, gibt er den Wert 80 aus.
      Zuletzt geändert von schneemann; 19.03.2007, 08:53.

      Kommentar


      • #4
        wiese einfach, wenn es auch komplziert geht
        PHP-Code:
        auswertung number_format (($punkte $fragenanzahl $prozent), 2',','.'
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Danke Peter.

          Leider bleibt das Problem das die Prozentangabe nicht stimmt. Beantwortet man alle Fragen richtig, gibt er 80% aus?? Die Rechnung muss doch aber stimmen...

          Kommentar


          • #6
            lass dir doch mal $punkte, $fragenanzahl und $prozent ausgeben.
            it's not a bug,
            it's a feature!

            Kommentar


            • #7
              Na dann solltest du vielleicht erst mal deine Werte kontrollieren.


              Wieso wird bei dir die Punktezahl eigentlich per POST übergeben?
              Dass das total simpel zu manipulieren wäre, ist dir bewusst?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                dann ist deine .txt-datei fehlerhaft. scheint einen zeilenumbruch am ende zu viel zu haben.

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Hallo,

                  also die txt.datei hat keinen weiteren Zeilen umbruch. Ich habe die Datei mal als Anhang mit hochgeladen.

                  @wahsaga

                  die Punktezahl wird per POST übergeben, weil ich noch eine Highscore-Liste mit eingebaut habe. Wie kann man den die Werte manipulieren um eine richtige Ausgabe zu bekommen??
                  Angehängte Dateien

                  Kommentar


                  • #10
                    Sorry, hab mich zufrüh gefreud. Wenn man keine Antwort richtig hat, gibt er 20% aus. Wie kann das denn sein?

                    Kommentar


                    • #11
                      Sorry, hab mich zufrüh gefreud. Wenn man keine Antwort richtig hat, gibt er 20% aus. Woran kann das denn liegen?

                      Kommentar


                      • #12
                        eigentlich dürfte dein code aus fehlermeldungen garnicht ausgeben. siehe hier
                        PHP-Code:
                        echo "<input type=hidden name="punkte" value="$punkte"><hr>\n"
                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Vermutlich wird deine letzte Zeile mittels eines CRLF abgeschlossen, was dazu führt, dass file() als letztes Element im Array ein leeres anfügt
                          PHP-Code:
                          $quizfrage file("quizfragen.txt");
                          echo 
                          '<pre>';
                          var_dump($quizfrage);
                          echo 
                          '</pre>'
                          Ist das letzte Element NICHT leer ?

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Original geschrieben von schneemann
                            Sorry, hab mich zufrüh gefreud. Wenn man keine Antwort richtig hat, gibt er 20% aus. Woran kann das denn liegen?
                            Daran, dass du unplausiblen Murks überträgst.

                            Bist du meiner Aufforderung, die für die Berechnung verwendeten Werte zu kontrollieren, inzwischen mal nachgekommen?
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              selber denken ist wohl nicht dein ding. $fragenanzahl - $punkte

                              peter
                              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                              Meine Seite

                              Kommentar

                              Lädt...
                              X