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

  • Gast-Avatar
    Ein Gast erstellte das Thema aform ..> Problem .. checkbox wird nicht erkannt.

    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

  • Gast-Avatar
    Ein Gast antwortete
    Hi

    Gratz zu Posting Nr 1000

    Bezüglich Code wollte ich dich eh noch ansprechen.
    Bin ein PHP Anfänger. Daher kann ich schlecht sagen, ob ich den Code sauber Programmiert habe.

    $_REQUEST hat nach dem zweiten submit (sofern die checkboxen markiert wurden) den wert 'on'.

    PHP-Code:
    <?php
            
    if(isset($_REQUEST['antwort0'])) {
                if(
    $_REQUEST['antwort0']=='on') {
                    echo 
    "
    Antwort: "
    .$_REQUEST['antwort0'];
                }
            }
    ?>
    Gruß
    Aaron

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    Das mit dem 2. Submit wollte ich rauskriegen.

    Eigentlich sieht der Code ganz gut aus.
    Sind auch einige der Checkboxes angewählt beim Abschicken?
    Sieht der dynamisch erzeugte HTML-Quelltext gut aus? Evtl. mal das generierte Formular zeigen.
    Was steht beim zweiten Aufruf des Scripts in $_REQUEST.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    @Der_Gerhard

    Vielen Dank für deine Zeit.. habe den Fehler soeben gefunden.

    Die Beiden haben bei dem ersten Aufruf kein Wertzuweisung -> Fehlermeldung.
    Sobald ich die boxen markieren und submit betätige, wird die Ausgabe angezeigt.

    echo "
    Antwort: ".$_REQUEST['antwort0'];
    echo "
    Antwort: ".$_REQUEST['antwort1'];

    Lösung:
    PHP-Code:
    <?php
    if(isset($_REQUEST['antwort0'])) {
        echo 
    "
    Antwort: "
    .$_REQUEST['antwort0'];
    }
    ?>
    Gruß
    Aaron

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ich rufe insgesamt 2x submit auf.

    1x HTML Datei um das Ganze zum laufen zu bringen.
    1x in der Zeile 76 um 'antwort0' an die Zeile 194 zu senden.

    Daher Schicke ich die dynamisch erzeugte HTML Seite auch ab.

    Gruß
    Aaron

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    Ich hab vorhin mal gefragt, ob ich nen Schritt vergessen hab.
    Nochmal gezielt:
    Wie oft klickst Du einen Submit-Button an?
    einmal oder zweimal?

    Nach Deinen Beschreibungen rufst Du nach der HTML-Seite das Script nur einmal auf.
    Dabei wird das zweite Formular ausgegeben.
    Schickst Du das zweite Formular dann ab oder nicht?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    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?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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.

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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 !"
    ;
    }

    ?>
    ?>

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    @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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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>';
        }
    }

    ?>

    Einen Kommentar schreiben:

Lädt...
X