Felder auf "Richtigkeit" überprüfen!

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

  • Felder auf "Richtigkeit" überprüfen!

    Hallo,

    ich überprüfe mit folgendem Script die, ob die Eingabe in das Feld richtig ist und kann auch die richtig Lösung in das Feld eintragen lassen!
    PHP-Code:
    <?php

    $fall
    "";
    $loesung"";

    $eingabe=$_POST["eingabe"];
    if(isset (
    $_POST["submit"])){
    if(
    $eingabe==ja){
        
    $fall="richtig";
        
    $eingabe=$eingabe;
        
    $style="color: #00FF00;";
    }else{
        
    $fall="falsch";
        
    $style="color: red;";
    }};

    if(isset (
    $_POST["submit2"])){
        
    $eingabe="";
        
    $loesung=ja;
    };

    ?>
        <form action="pruefen.php" method="post">
            <table>
                <tr>
                    <td>
                        <input name="eingabe" id="eingabe" value="<?php echo $eingabe$loesung?>" type="text" />
                    </td>
                    <td>
                        <div style="<?php echo $style?>" ><?php echo $fall?></div>
                    </td>
                </tr>
            </table>
            <input type="submit" name="submit" id="submit" /><input type="submit" name="submit2" id="submit2" value="l&ouml;sung" />
        </form>
    Jetzt würde ich gerne mehrere Felder in das Formular einfügen und ebenfalls überprüfen lassen!

    Mir würde jetzt nur die Variante einfallen, dass ich die if-Abfrage erneut schreibe und dort dann die die Variablen und Feldnamen in der Abfrage abänder.

    Aber bei z.B.: 30 Feldern würde das Script ja ewig lang werden!
    Hätte da vielleicht jemand einen Vorschlag, wie ich das bewältigen könnte?
    konnte mir leider nicht helfen!

  • #2
    1. Das heißt nicht
    PHP-Code:
    if($eingabe==ja
    sondern
    PHP-Code:
    if($eingabe=='ja'){ 
    2. Das ist Tinnef
    PHP-Code:
    $eingabe=$eingabe
    3. Arbeite mit Arrays. Einem wo du alles abspeicherst und einem von du die Fehler einträgst. Grundlagen dazu findest du zum Beispiel auf meiner Seite.

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

    Kommentar


    • #3
      Okay... danke!
      Ich habe jetzt das geschrieben:
      PHP-Code:
      <?php

        $loesung
      [] = 'Apfel';
        
      $loesung[] = 'Banane';
        
      $loesung[] = 'Kirsche';

      $fall"";
      $eingabe=$_POST["eingabe"];
      if(isset (
      $_POST["submit"])){
      if(
      $eingabe==$loesung[0]){
          
      $fall="richtig";
          
      $style="color: #00FF00;";
      }else{
          
      $fall="falsch";
          
      $style="color: red;";
      }};

      if(isset (
      $_POST["submit2"])){
          
      $eingabe="";
          
      $richtig=$loesung[0];
      };
      Sehe ich das denn richtig, dass ich dann trotzdem für jedes Feld eine if-Abfrage machen muss?
      Also so:
      PHP-Code:
      $fall"";
      $eingabe=$_POST["eingabe"];
      if(isset (
      $_POST["submit"])){
      if(
      $eingabe==$loesung[0]){
          
      $fall="richtig";
          
      $style="color: #00FF00;";
      }else{
          
      $fall="falsch";
          
      $style="color: red;";
      }};
      $eingabe2=$_POST["eingabe2"];
      if(isset (
      $_POST["submit"])){
      if(
      $eingabe2==$loesung[1]){
          
      $fall="richtig";
          
      $style="color: #00FF00;";
      }else{
          
      $fall="falsch";
          
      $style="color: red;";
      }}; 
      Tut mir leid, wenn ich nerven sollte!

      Kommentar


      • #4
        Sehe ich das denn richtig, dass ich dann trotzdem für jedes Feld eine if-Abfrage machen muss?
        Nö, das kannst du wunderbar in einer Schleife machen.

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

        Kommentar


        • #5
          Ich habe es jetzt umgeschrieben, aber er gibt mir jetzt bei einer falschen Antwort immer "Richtig" aus. Warum?
          PHP-Code:
          <?php

            $loesung
          [0] = 'Apfel';
            
          $loesung[1] = 'Banane';
            
          $loesung[2] = 'Kirsche';

            
          $eingabe $_POST["eingabe"];
          //  $eingabe = $eingabe.$x;

              
          $anzahl count $loesung );
              echo 
          "<p>Es gibt $anzahl Einträge</p>";
              echo 
          "<form action = 'pruefen4.php' method = 'post'>";
              echo 
          "<table>";
              for (
          $x 0$x $anzahl$x++)
              {
                  echo 
          "<tr><td>Eintrag von $x ist </td><td><input value='$loesung[$x]' name='eingabe[$x]' /></td></tr>";
              }
              echo 
          "</table>";
              echo 
          "<input type='submit' name='submit' id='submit' /><input type='submit' name='submit2' id='submit2' value='l&ouml;sung' />";
              echo 
          "</form>";
            if(isset(
          $_POST["submit"])){
              if(
          $eingabe[$x]==$loesung[$x]){
                  echo
          'richtig';
                  }
            }
          ?>

          Kommentar


          • #6
            Hi senger1985,

            wie soll dein Script denn raten, welche Antwort richtig ist? Ich würde zu dem Array mit deinen Einträgen noch
            ein weiteres Array mit der gleichen Anzahl von Elementen anlegen.

            Jedes Element hat den Wert "Falsch", ein Element den Wert "Richtig". Bei der Ausgabe gibst du zu jedem Element einen Radiobutton aus, gleicher Name, aber die Values 0 - count(Elemente).

            Da die Namen der Radiobutton gleich sind, wird nur der Radiobutton gesendet, der angewählt ist, mit seinem Valuewert.
            So kannst du ganz leicht ausgeben, ob jemand den richtigen Eintrag ausgewählt hat, ohne dass du mit if-then-else groß was prüfen musst.

            PHP-Code:
            <?php
            $begriffe
            []="Apfel";
            $begriffe[]="Banane";
            $begriffe[]="Orange";

            $antwort[]="Falsch";
            $antwort[]="Richtig";
            $antwort[]="Falsch";  
            ?>
            <html>
            <head>
            <title>Untitled</title>
            </head>
            <body>
            <form action="" method="post">
            <table border="1">
            <tr>
            <td>Begriff</td><td>Antwort</td>
            </tr>
            <?php 
            for($i=0;$i<count($begriffe);$i++){
             echo 
            '<tr>';
             echo 
            '<td>'.$begriffe[$i].'</td><td><input type="radio" name="antwort" value="'.$i.'"></td>';
             echo 
            '</tr>';
            }
            ?>
            <tr>
            <td colspan="2"><input type="submit" name="cmd" value="Raten">
            </tr>
            </table>
            </form>
            <?php 
            if(isset($_POST['cmd'])){
             if(!isset(
            $_POST['antwort'])){
              echo 
            'Sie müssen eine Antwort anwählen!';
              exit;
             }else{
                 echo 
            $begriffe[$_POST['antwort']].' ist '.$antwort[$_POST['antwort']];
                 }
            }
            ?>
            </body>
            </html>
            Gruß
            Günni

            Kommentar


            • #7
              Hallo Günni,

              ich gebe ja in meinem Script das erste Array als Textboxen aus und möchte, wenn in der ersten Textbox NICHT "Apfel" steht die Antwort "falsch" steht und nicht mir Radiobutton!

              Aber danke für deinen Tipp!

              Kommentar


              • #8
                Mittlerweile habe ich es hinbekommen, die Abfrage richtig zu programmieren!

                Nur könnte mir jetzt bitte jemand erklären, die ich mittels "array_push" das Array via Eingabefeld erweitern kann?

                Denn, wenn ich dieses Script ausführe:
                PHP-Code:

                    $loesung
                [0] = 'Apfel';
                    
                $loesung[1] = 'Banane';
                    
                $loesung[2] = 'Kirsche';
                    
                $eintrag $_POST['eintrag'];
                    echo 
                $eintrag;

                    if(isset(
                $_POST['submit'])){
                    
                $zahl count ($loesung);
                    for (
                $x 0$x $zahl$x++)
                        {
                        
                array_push($loesung$eintrag);
                    }

                Funktioniert es leider nicht!

                Kommentar


                • #9
                  Der Code ergibt in meinen Augen keinen Sinn. Wie soll deiner Meinung nach das fertige Array aussehen?

                  Kommentar


                  • #10
                    Ich sagte ja, es geht nicht!

                    Mein Array hat im Moment die Werte
                    [0] => Apfel
                    [1] => Banane
                    [2] => Kirsche

                    Jetzt sollen aber noch neue Einträge hinzugefügt werden!

                    Kommentar


                    • #11
                      Bitte beantworte meine Frage.

                      Kommentar


                      • #12
                        Ich verstehe deine Frage nicht ganz!

                        Aber ich versuche es nochmal zu erklären.

                        Er soll die Eingaben, die ich über ein Textfeld eingegeben habe über ein Form in das Array speichern, so dass es dann später so aussieht:

                        $loesung[0] = 'Apfel';
                        $loesung[1] = 'Banane';
                        $loesung[2] = 'Kirsche';
                        $loesung[3] = (gesendeter Wert aus Form);
                        $loesung[4] = (gesendeter Wert aus Form);
                        $loesung[5] = (gesendeter Wert aus Form);

                        Kommentar


                        • #13
                          PHP-Code:
                          $loesung[] = $_POST['eintrag']; 
                          Dir ist aber schon bewusst, dass das Array nach jedem Script-Ende wieder gelöscht wird, wenn du es nicht irgendwo speicherst (Session, Datenbank, etc.)?

                          Kommentar


                          • #14
                            Das ist mir bewusst, darum wollte ich es in eine neue Var speichern!

                            Komme aber leider gerade nicht drauf, wie!

                            Kommentar


                            • #15
                              Zitat von senger1985 Beitrag anzeigen
                              Das ist mir bewusst, darum wollte ich es in eine neue Var speichern!
                              Variablen gehen nach Script-Ende immer verloren.

                              Du solltest dich ein wenig mit den Grundlagen beschäftigen (wie funktioniert HTTP, was macht ein Webserver, wie arbeitet PHP, etc.).

                              Kommentar

                              Lädt...
                              X