Ankündigung

Einklappen
Keine Ankündigung bisher.

aform ..> Problem .. checkbox wird nicht erkannt

Einklappen

Neue Werbung 2019

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

  • aform ..> Problem .. checkbox wird nicht erkannt

    Hallo

    http://nopaste.php-q.net/167135

    In der Zeile 15 sende ich die Anfrage.
    In der Zeile 47 wird die Anfrage entgegen genommen.

    Das Ganze funktioniert soweit.

    Was nicht funktioniert ist die Zeile 53 ..

    echo $_REQUEST['antwort0'];

    Ich erhalte die folgende Fehlermeldung:
    Notice: Undefined index: antwort0 in /var/www/questions/index.php

    Wäre für jede Hilfe dankbar
    Gruß
    Aaron


  • #2
    Dann mach doch einfach mal ein
    PHP-Code:
    <?php

        
    echo '<pre>';
        
    print_r($_REQUEST);
        echo 
    '</pre>';

    ?>
    privater Blog

    Kommentar


    • #3
      Hi

      Wie erwartet:

      Array
      (
      [action] => frage_anzeigen
      [level_auswahl] => level1
      [PHPSESSID] => d1871b6effae52bd5dc75f32b3aa1712
      )

      Ich möchte gerne wissen, warum echo $_REQUEST['antwort0']; nicht ausgegeben wird.
      Warum kommt das Ganze unte nicht an ?!

      Gruß
      Aaron

      Kommentar


      • #4
        name=antwort.$i

        Was soll der Punkt??? Und Attribute gehören zwischen " oder ', mit anderen Worten, dein HTML-Code ist Schrott.

        Gruß
        phpfan

        Kommentar


        • #5
          Hi phpfan,

          Hast recht.. Punkt war falsch.

          name='antwort$i'

          wird leider auch nicht erkannt ?!

          Gruß
          Aaron

          Kommentar


          • #6
            zumeist ist es auch ganz hilfreich tag mit > zu beenden (<...>) :wink:

            Kommentar


            • #7
              Hi

              @karl-150: Danke für den Hinweis. Ist aber nicht die Fehlerquelle. Sowas schluckt HTML ohne Probleme


              Das hier funktioniert ohne probleme !!!
              Ich raffe nur nicht, warum meine Version (oben) nicht funktioniert.


              PHP-Code:
              <?php

              echo "<html><body>";

              echo 
              "<table><form method=post action='box2.php?action=frage_anzeigen&level_auswahl=level1'>";

              for(
              $i=0$i<=1$i++) {
                  echo 
              "<tr><td><input type=checkbox name='antwort$i'></td><td>Antwort $i</td></tr>";
                  echo 
              "
              "
              ;
              }
              echo 
              "</table>
              "
              ;
              echo 
              "<input type=submit value=weiter>";
              echo 
              "</form></body></html>";




              if (
              $_REQUEST["action"] == 'frage_anzeigen') {

                  if (
              $_REQUEST["level_auswahl"] == 'level1') {
                      echo 
              "
              "
              ;
                      echo 
              "
              Antwort: "
              .$_REQUEST['antwort0'];
                      echo 
              "
              Antwort: "
              .$_REQUEST['antwort1'];
                      
                      echo 
              '<pre>';
                      
              print_r($_REQUEST);
                      echo 
              '</pre>';
                  }
              }

              ?>

              Kommentar


              • #8
                @aaron_k:
                Irgendwie passen die Aussagen in Deinen Postings nicht so ganz zusammen....

                Zitat von aaron_k
                Wie erwartet:
                Array
                (
                [action] => frage_anzeigen
                [level_auswahl] => level1
                [PHPSESSID] => d1871b6effae52bd5dc75f32b3aa1712
                )
                Ich möchte gerne wissen, warum echo $_REQUEST['antwort0']; nicht ausgegeben wird.
                Nochmal langsam zum mit Mitmeiseln.
                - WIE ERWARTET wird ... ausgegeben. Das heißt, der Inhalt stimmt.
                - $_REQUEST['action0'] soll ausgegeben werden.

                So....
                Wenn der Inhalt von _REQUEST wie erwartet ist (und da ist nunmal kein 'action0' drin), warum sollte PHP denn im Traum dran denken, einen Wert für $_REQUEST['action0'] auszuspucken?
                Wie in solchen Stellen üblich, kommt "Notice: undefined index....."

                Und zu dem Teil hier:
                Zitat von aaron_k
                Ich raffe nur nicht, warum meine Version (oben) nicht funktioniert.
                Öhm... HALLO?
                Weil Du doch schon lange erkannt hast, dass action.$i Mist ist und action$i heißen muss. Das hast Du korrigiert und OH WUNDER... es geht.

                In Deinem falschen ersten Versuch kamen mehrere Einträge mit dem gleichen name=action raus.

                HTML schluck nicht nur schlampige Programmierung bei fehlenden >, sondern sogar Schlampereien, wo einfach so ein '.' hinter dem Namen steht.

                Das ist halt die Quittung für Sachen wie "HTML schluckt sowas...".
                Ja, LEIDER geht ziemlich viel miserables HTML noch irgendwie durch und da fällt das halt nicht so schnell auf, wenn man Mist macht.

                Übrigens "schluckt" HTML sowas sicher nicht, sondern die Browser, die nicht sofort meckern, wenn es falsch ist.
                Wenn Du wissen willst, was HTML "schluckt", dann frag den W3C-Validator. Der sagt Dir schon, was ein Fehler ist und was nicht.
                **********************************
                Nein, ich bin nicht die Signatur.
                Ich putze hier nur.
                **********************************

                Kommentar


                • #9
                  Hi Der_Gerhard,

                  Dank phpfa und Karl habe ich eine Version zum laufen gebraucht.
                  Mein eigentliches Programm funktioniert leider immer noch nicht, obwohl ich die Veränderung 1:1 übernommen habe.

                  Ich stehe imom bissel auf dem Schaluch.. was mache ich hier immer noch falsch ?!

                  PHP-Code:
                  <?php
                  <?php
                  ....
                  ....
                  ....
                      
                      
                  // Html Seite mit Frage + Antworten werden erzeugt
                      
                  echo "<html><body>";
                      echo 
                  "$fragestellung";
                      echo 
                  "<table><form method=post action='index.php?action=frage_anzeigen&level_auswahl=$level'>";
                      
                  // Antworten + checkboxen werden erzeugt. 
                      
                  for($i=0$i<=sizeof($naechste_frage_antworten)-1$i++) {
                          echo 
                  "<tr><td><input type=checkbox name='antwort$i'></td><td>$naechste_frage_antworten[$i]</td></tr>";
                          echo 
                  "
                  "
                  ;
                      }
                      echo 
                  "</table>
                  "
                  ;
                      echo 
                  "<input type=submit value=weiter>";
                      echo 
                  "</form></body></html>";

                      }
                  //ENDE Auswertung
                  }//Ende function html_seite_erzeugen

                  ....
                  ....
                  ....

                  if (
                  $_REQUEST["action"] == 'frage_anzeigen') {

                      if (
                  $_REQUEST["level_auswahl"] == 'level1') {
                          
                  $level "1";
                          
                  frage_und_antwort_generieren($matrikelnummer$level);

                          echo 
                  "
                  "
                  ;
                          echo 
                  "
                  Antwort: "
                  .$_REQUEST['antwort0'];
                          echo 
                  "
                  Antwort: "
                  .$_REQUEST['antwort1'];
                          
                          echo 
                  '<pre>';
                          
                  print_r($_REQUEST);
                          echo 
                  '</pre>';

                      }
                  //Ende level1
                  }//Ende frage_anzeigen

                  ....
                  ....

                  else {
                      echo 
                  "
                   kein action !"
                  ;
                  }

                  ?>
                  ?>

                  Kommentar


                  • #10
                    Pack die Ausgabe von $_REQUEST mal vor die if-Abfrage.
                    Was kommt dabei raus?
                    Was wird denn überhaupt von dieser Version ausgegeben?
                    Ist $Level vorher irgendwann auf "level1" gesetzt worden? Zumindest im vorherigen Script dürfte das der Fall gewesen sein. (Laut Ausgabe von $_REQUEST)

                    Da anscheinend Formular und Auswertung im selben Script passiert: Was passiert beim ersten Aufruf der Seite und was nach Absenden des Formulars?

                    Zu der Frage, was Du falsch machst...
                    - Nahezu alle Tag-Attribute, die ich gesehen habe sind nicht in Anführungszeichen.
                    - Die Sequqnze <table><form>...</table>...</form> finde ich gruselig.
                    - Du schließt <input> nicht ab.
                    Da gibt es viele kleine Dinge, die Dein Ergebnis weit weg von sauberem HTML bringen.
                    Mit Deinem PHP-Problem hat das aber nix zu tun.
                    **********************************
                    Nein, ich bin nicht die Signatur.
                    Ich putze hier nur.
                    **********************************

                    Kommentar


                    • #11
                      Hi Der_Gerhard,

                      Wenn ich die das Ganze vor die if-Abfrage stelle, erhalte ich die gleiche Meldung.
                      Die Ausgabe muss an diese Stelle aufgerührt werden.
                      Ich werde später die echo Ausgabe durch eine Methode ersetzet, um Daten in der DB zu speichern.
                      level wurde vorher auf level1 gesetzt.

                      Was ich nicht raffe, ist die Tatsache, dass das obere Beispiel funktioniert und obwohl ich die Veränderung 1:1 übernommen habe, ich immer noch eine Fehlermeldung erhalte.


                      Die Sache mit HTML werde ich in ordnung bringen.


                      Hier befindet sich die gesamte Quelle:
                      http://nopaste.php-q.net/167169

                      Als erstes starte ich diese HTML Datei.

                      PHP-Code:
                      <?php

                      <table>
                          <
                      form method="post" action="index.php?action=frage_anzeigen">

                          <
                      tr><td><select name="level_auswahl" size="7">
                          <
                      option selected value="level1"Level 1
                          
                      <option value="level2"Level 2
                          
                      <option value="level3"Level 3

                          
                      <option value="random_level1"Random Level 1
                          
                      <option value="random_level2"Random Level 2
                          
                      <option value="random_level3"Random Level 3
                          
                      <option value="random_all"Random Level 1-3
                          
                      </select></td></tr>

                          <
                      tr><td>
                      </
                      td></tr>

                          <
                      tr><td><input type="submit" value="Start"></td></tr>

                          </
                      form>
                      </
                      table>
                      ?>
                      Die HTML Datei sendet die Anfrage an: action=frage_anzeigen (Zeile 193)
                      Anschliessend wird die Zeile 37 aufgerufen und in 71 fängt das roblem an.

                      Kommentar


                      • #12
                        MOOOOOOOOOOOOOOOMENT mal....
                        Mir schwant da was...

                        Sehe ich das richtig, dass Du
                        - Die obige HTML-Seite aufrufst,
                        - dort Level1 auswählst und dann
                        - Submit drückst.
                        ...
                        - Dadurch das Script aufgerufen wird und
                        - Du gerne in $REQUEST['antwort0'] etwas sehen möchtest?

                        Hab ich da einen Schritt vergessen?
                        **********************************
                        Nein, ich bin nicht die Signatur.
                        Ich putze hier nur.
                        **********************************

                        Kommentar


                        • #13
                          Hi

                          1. html Seite wird aufgerufen
                          2. Zeile 192/194 wird aufgerufen
                          3. Zeile 196 die Methode wird aufgerufen
                          4. Zeile 86 befindet sich die Methode aus der Zeile 196
                          5. Zeile 109 wird aufgerufen (Methode)
                          6. Zeile 37 beindet sich die Methode

                          Hier wird level1 für die Erzeugung eingesetzt.
                          Hier wird html erzeugt und die Zeile 192/194 erneut aufgerufen.

                          Und genau hier funktioniert die Übergabe nicht

                          Gruß
                          Aaron

                          Kommentar


                          • #14
                            Alsooooo...
                            du rufst die HTML-Seite auf und drückst dort auf den Submit-Button.
                            -> Das Script, das man unter Deinem Link finden kann, wird aufgerufen.
                            Was da an Parameter übergeben wird, hast Du ja mit $_REQUEST ausgegeben.
                            -> In Zeile 194: Aufruf der Funktion
                            .... Ausgabe eines neuen Formulars (dort enthalten: antwort0, antwort1,...)
                            .... Rückkehr zu Zeile 196
                            .. Jetzt erwartest Du, dass antwort0 etc. in $_REQUEST steht...

                            Im Klartext:
                            Nur weil Du in der Funktion ein neues Formular ausgibst, soll sich der $_REQUEST des aktuellen Aufrufs ändern?
                            So wird das nix!

                            Ohne dass Du da auch mal das neu ausgegebene Script ausfüllst und auf Submit drückst, geht da nix.
                            Zwei Formulare->zweimal Submit.
                            **********************************
                            Nein, ich bin nicht die Signatur.
                            Ich putze hier nur.
                            **********************************

                            Kommentar


                            • #15
                              PHP-Code:
                              <?php
                                  
                              // Html Seite mit Frage + Antworten werden erzeugt
                                  
                              echo "<html>";
                                  echo 
                              "<body>";
                                  echo 
                              "$fragestellung";
                                  echo 
                              "<table>";
                                  echo 
                              "<form method='post' action='index.php?action=frage_anzeigen&level_auswahl=$level'>";
                                  
                              // Antworten + checkboxen werden erzeugt. 
                                  
                              for($i=0$i<=sizeof($naechste_frage_antworten)-1$i++) {
                                      echo 
                              "<tr><td><input type=checkbox name='antwort$i'></td><td>$naechste_frage_antworten[$i]</td></tr>";
                                      echo 
                              "
                              "
                              ;
                                  }
                                  echo 
                              "</table>";
                                  echo 
                              "
                              "
                              ;
                                  echo 
                              "<input type=submit value=weiter></input>";
                                  echo 
                              "</form>";
                                  echo 
                              "</body>";
                                  echo 
                              "</html>";
                              ?>

                              antwort$i <-- das hier erhält als Wert 'antwort0' bis 'antwort3'

                              Weiter unten befindet sich der Sebmit Button.
                              echo "<input type=submit value=weiter></input>";

                              Wenn ich submit drücke, soll 'antwort0' verschickt werden.

                              echo "
                              Antwort: ".$_REQUEST['antwort0']; soll in der Zeile 201 diese Antwort entgegen nehmen.

                              In diesem Beispiel funktioniert das Ganze:
                              PHP-Code:
                              <?php
                              echo "<html><body>";

                              echo 
                              "<table><form method=post action='box2.php?action=frage_anzeigen&level_auswahl=level1'>";

                              for(
                              $i=0$i<=1$i++) {
                                  echo 
                              "<tr><td><input type=checkbox name='antwort$i'></td><td>Antwort $i</td></tr>";
                                  echo 
                              "
                              "
                              ;
                              }
                              echo 
                              "</table>
                              "
                              ;
                              echo 
                              "<input type=submit value=weiter>";
                              echo 
                              "</form></body></html>";




                              if (
                              $_REQUEST["action"] == 'frage_anzeigen') {

                                  if (
                              $_REQUEST["level_auswahl"] == 'level1') {
                                      echo 
                              "
                              "
                              ;
                                      echo 
                              "
                              Antwort: "
                              .$_REQUEST['antwort0'];
                                      echo 
                              "
                              Antwort: "
                              .$_REQUEST['antwort1'];
                                      
                                      echo 
                              '<pre>';
                                      
                              print_r($_REQUEST);
                                      echo 
                              '</pre>';
                                  }
                              }
                              ?>
                              Aber im Hauptprogramm funzt das Ganze nicht.

                              Gruß
                              Aaron

                              Kommentar

                              Lädt...
                              X