Strafpunkte zählen.

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

  • Strafpunkte zählen.

    Hallo Leute.
    Ich bin einbisschen aus der Übung mit PHP und habe zu viel vorgenommen und stecke jetzt in der Klemme. Wenn mir jemand helfen könnte? Werde ich mich sehr freuen.

    Ein Formular besteht aus 10 Fragen, jede Frage hat 2-3 Antworten, User klickt richtige Antworten und bekommt nach der Prüfung zum Vergleich seine und die richtige Antworten.
    So weit ist gut. Funzt. Und weiter klappt nichts.
    Jede Frage hat Strafpunkte 2 bis 5. Wenn nur eine falsche Antwort angeklickt wurde oder die richtige nicht angeklickt wurde, wird die Frage als falsch akzeptiert. Die Strafpunkte müssen gezählt werden und dann angezeigt.
    Ich habe was gebastelt, aber das funzt nicht und ich habe ein Verdacht, dass das ganz andere Suppe ist. Würdet ihr mir die Richtung zeigen.

    PHP-Code:
    if(isset($_POST["prufen"])){
    $bogen=$_POST["bogen"];
    $anf=mysql_query("SELECT * FROM table_name WHERE bogen LIKE '$bogen' ORDER by id");
    #Strafpunkte zahlen
    while($row=mysql_fetch_array($anf)){
            
    $a='a'.$row["id"];#Übergegebene Imput Name
            
    $b='b'.$row["id"];
            
    $c='c'.$row["id"];#ende
        
    if(isset($_POST[$a]) && $_POST[$a]!=|| !isset($_POST[$a]) && $row["antwort1"]==||
            isset(
    $_POST[$b]) && $_POST[$b]!=|| !isset($_POST[$b]) && $row["antwort2"]==||
            isset(
    $_POST[$c]) && $_POST[$c]!=|| !isset($_POST[$c]) && $row["antwort3"]==1)
            {
            
    $bal=$row["bal"];
            
    $result=0;
            
    $straf=$result+$bal;
            }
        else{ 
    $straf=0;}
    }
    echo
    '<h3 align="">Strafpunkte '.$straf.'</h3>'

  • #2
    kein bock deine abgefahrene if-anweisung auseinanderzunehmen, nehme an, dass sie stimmt. aber die 3. zeile von unten bedeutet wohl, dass wenn der user nur die letzte frage richtig beantwortet hat, hat er 0 punkte und somit bestanden?

    p.s. парлэ ву франсе, мон ами?

    Kommentar


    • #3
      Re: Strafpunkte zählen.

      Original geschrieben von vitalinka
      Ich habe was gebastelt, aber das funzt nicht
      OffTopic:
      für diese wundervolle fehlerbeschreibung gebe ich gleich mal 100 forums-strafpunkte aus.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        HA,HA,HA.
        Ich kann euch Profis verstehen. Genug gelacht.
        IF Anweisung ist schon OK. Ich mache später mit SWITCH.
        Wie sollen 3 letzte Zeilen aussehen?

        Kommentar


        • #5
          Ist es jetzt besser so?
          PHP-Code:
          if(isset($_POST["prufen"])){
          $bogen=$_POST["bogen"];
          $anf=mysql_query("SELECT * FROM table_name WHERE bogen LIKE '$bogen' ORDER by id");
          #Strafpunkte zahlen
          while($row=mysql_fetch_array($anf)){
                  
          $a='a'.$row["id"];#Übergegebene Imput Name
                  
          $b='b'.$row["id"];
                  
          $c='c'.$row["id"];#ende
                  
          $straf=0;
              switch(
          $straf){
              case isset(
          $_POST[$a]) && $_POST[$a]!=1:
              
          $bal=$row["bal"];
              break;
              case !isset(
          $_POST[$a]) && $row["antwort1"]==1:
              
          $bal=$row["bal"];
              break;
              case isset(
          $_POST[$b]) && $_POST[$b]!=1:
              
          $bal=$row["bal"];
              break;
              case !isset(
          $_POST[$b]) && $row["antwort2"]==1:
              
          $bal=$row["bal"];
              break;
              case isset(
          $_POST[$c]) && $_POST[$c]!=1:
              
          $bal=$row["bal"];
              break;
              case !isset(
          $_POST[$c]) && $row["antwort3"]==1:
              
          $bal=$row["bal"];
              break;
              Default:
              
          $bal=0;
              }

              ???????????????
          }
          echo
          '<h3 align="">Strafpunkte '.$straf.'</h3>'

          Kommentar


          • #6
            mich stört nur das else{ $straf=0;}
            überleg ma, ob es den aktuellen stand nicht überschreibt, wenn die letzte frage richtig beantwortet wurde.

            Kommentar


            • #7
              Ich beantworte gar keine Fragen, um die höchste Strafpunktenstand zu erreichen. Aber bekomme 3 oder 0. 3 ist Strafpunkt für die letzte Aufgabe.
              Und mit SWITCH nur 0.

              Kommentar


              • #8
                OffTopic:
                die Bedingung in deinem Switch und die Prüfswerte in Case haben nichts miteinander zu tun warum machst du das?

                Kommentar


                • #9
                  Das habe ich jetzt nicht verstanden. Wie soll ich es anders machen?

                  Kommentar


                  • #10
                    switch wendet man sinnvoll an, wenn man eine Variable abfragt, die verschiedene Werte enthält. Bei dir ist anders, du prüfst verschiedene Variable auf einen bestimmten Wert, daher ist If schon OK. Du mußt wissen, was du tutst. Nicht einfach sich verunsichern lassen. Wenn der antibiotika tolle Sprüche klopft, heißt ja noch lange nicht, dass alles stimmt

                    Ausserdem brauchst du isset($_POST['...']) im Prinzip nicht zu prüfen, wenn du sicher bist, von wo die Seite kommt, denn Post-Variablen eines Formulars existieren immer. Nur, sie sind entweder leer oder sie enhalten Usereingaben. Somit schrumpft deine If-Anweisung um einiges.

                    Du hast immer noch nicht gesagt, was nicht klappt. Was liest du mit der Abfrage? Die richtigen Antworte? Was ist bal?

                    Kommentar


                    • #11
                      Hallo.
                      Ich habe oben schon erklärt.
                      Strafpunkte zählen klappt nicht.
                      $bal = Strafpunkt für eine falsche Frage.
                      10 Aufgaben für jede 2-3 Antworten, wenn nur eine Antwort falsch ist, ist die Aufgabe falsch, man bekommt Strafpunkte 2-5. User beantwortet die Fragen(Aufgabe), klickt auf prüfen und bekommt Strafpunkte, richtige und seine Antworte zum vergleich. Strafpunkte zählen klappt nicht.

                      Ausserdem brauchst du isset($_POST['...']) im Prinzip nicht zu prüfen
                      Ich habe mit GET ausprobiert, um zu sehen welche werte werden übergeben, funzt POST anders? Wenn ich Feld nicht anklicke, wird die Variable übergeben, aber leer?

                      Kommentar


                      • #12
                        Tipp: formuliere programmtechnisch deine Bedingung für Strafpunkte zuerst für einzelne Antwort, dann zusammen, und zuletzt festlegen, welche Typ von Variable geeignet ist, um das Ergebnis für das gesamte Formular aufzunehmen und damit speichern
                        Wenn ich Feld nicht anklicke, wird die Variable übergeben, aber leer?
                        nein, bei checkbox mußt du doch auf Existenz prüfen
                        Zuletzt geändert von asp2php; 23.11.2004, 11:51.

                        Kommentar


                        • #13
                          Jetzt hast du mich aber durcheinander gebracht.

                          Ausserdem brauchst du isset($_POST['...']) im Prinzip nicht zu prüfen…
                          nein, bei checkbox mußt du doch auf Existenz prüfen
                          Mit einzelnen Fragen klappt es prima. Ich habe auch ein Examen, aus allen fragen nach Zufallsprinzip wird eine nach den anderen Fragen ausgegeben und Strafpunkte werden in SESSION gespeichert, und mit jedem falschem Antwort +$bal. Aber wie ich das auf ganzes Formular anwenden soll. ??????????????

                          Kommentar


                          • #14
                            Original geschrieben von vitalinka
                            Jetzt hast du mich aber durcheinander gebracht.
                            wieso? wie im normalen Leben gibt es Regel uns Ausnahmen, Checkbox ist eben eine Ausnahme

                            Mit einzelnen Fragen klappt es prima. Ich habe auch ein Examen, aus allen fragen nach Zufallsprinzip wird eine nach den anderen Fragen ausgegeben und Strafpunkte werden in SESSION gespeichert, und mit jedem falschem Antwort +$bal. Aber wie ich das auf ganzes Formular anwenden soll. ??????????????
                            zeige kurz mal wie du im einzelnen machst.

                            btw: die Tastatur kannst du neu kaufen. Die Taste "ß?\" ist defekt.

                            Kommentar


                            • #15
                              PHP-Code:
                              if(isset($_POST["id"])){
                                  
                              $anfr=mysql_query("SELECT * FROM table_name WHERE id LIKE '$id'");
                                  while(
                              $row=mysql_fetch_array($anfr)){
                                      
                              #Prufen POST nach falsche antworten result in session schreiben
                                      
                              if(isset($_POST["antwort1"]) && $_POST["antwort1"]==||
                                          !isset(
                              $_POST["antwort1"]) && $row["antwort1"]==||
                                          
                                          isset(
                              $_POST["antwort2"]) && $_POST["antwort2"]==|| 
                                          !isset(
                              $_POST["antwort2"]) && $row["antwort2"]==|| 
                                          
                                          isset(
                              $_POST["antwort3"]) && $_POST["antwort3"]==||
                                          !isset(
                              $_POST["antwort3"]) && $row["antwort3"]==1)
                                          {
                                          if(isset(
                              $_SESSION["antworten"])){
                                          
                              $_SESSION["antworten"]=$_SESSION["antworten"]+$row["bal"];
                                          }
                                          else{
                              $_SESSION["antworten"]=$row["bal"];}
                                      
                              #ende
                                      
                              }
                                  }
                              }
                              #ende
                              #Prüfung beenden und Resultat ausgeben
                              $_SESSION["counter"]++;
                              if(
                              $_SESSION["counter"]>=30){
                                  if(!isset(
                              $_SESSION["antworten"])){$_SESSION["antworten"]=0;}
                                  if(
                              $_SESSION["antworten"]<=9){
                                  
                              $resultat='<h2 align="center">Sie haben Pr&uuml;fung bestanden mit '.$_SESSION["antworten"].' Strafpunkten!</h2>
                                      Herzlichen Gl&uuml;ckwunsch, Sie haben sich gut vorbereitet! 

                              Kommentar

                              Lädt...
                              X