Thomas: Was ist an der zeile Falsch (übergabe von einem array)

Hi,
ich will ein array, das error heisst an eine neue Seite übergeben (das ganze ist ein Fragebogen) und habe folgende Zeile um das array zu übergeben:

echo" <input type="hidden" name="fehler" value="<? echo implode("|",$error); ?>">   ";

und am anfang der PHP seite steht dann folgendes:

$error = explode("|",$_POST["error"]);

aber es funtioniert nicht, was mache ich falsch ???
Achja, brauche ich eigentlich die zeile       $error= array();     noch ????

ich komm hier echt nciht mehr klar, habe schon 2 mal in das Forum geschrieben, und habe auch super Antworten bekommen, aber es will irgendwie nicht klappen, ich kapier das nicht.

  1. Huhu Thomas

    error != fehler

    Viele Grüße

    lulu

    1. geht leider auch nicht......

      erstens habe ich dann die anzeige: ,}{~q}};t~g?"hidden" name="error" value=" Box1 X

      und wenn ich mir die anzeigen lasse, die variable, denn zählt sie nicht hoch, also ist der alte wert verschwunden beim seite neu laden

      1. also, hier mal der Quelltext von einer Testseite, wenn die hinhaut, denn kann ich das übertragen, wäre nett, wenn mir da mal jemand helfen könnte:

        <html>
        <head>
        <title></title>

        </head>
        <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
        <?php

        $array = explode("|",$_POST["wurscht"]);
        $i     = $_POST["counter"];

        $error[$i] = 3;
            $i++;
            echo "Gesamtfehlerpunkte:". array_sum($array). "<br>";

        echo" <form action="test.php" method="post">  ";

        echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>">  ";

        echo" <input type="hidden" name="counter" value="$i"> ";
        echo" <input type="submit" name="Start" value="Submit">   ";

        ?>
        </body>
        </html>

        1. Aloha

          $array = explode("|",$_POST["wurscht"]);

          [...]

          echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>">  ";

          dazwischen passiert nichts mit $array ?!

          So ganz verstehe ich das Problem nicht, was soll denn da drinstehen ?

          Statt das mit explode und implode zu machen könntest Du es auch
          so lösen

          foreach( $_POST['wurscht'] as $one ){
           printf('<input type="hidden" name="wurscht[]" value="%s">',$one);
          }

          Viele Grüße

          lulu

          btw. $array ist ein etwas ungünstiger Name für ein Array

          1. Ups, ein Fehler im Quelltext:

            <html>
            <head>
            <title></title>

            </head>
            <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
            <?php

            $array = explode("|",$_POST["wurscht"]);
            $i     = $_POST["counter"];

            $array[$i] = 3;
                $i++;
                echo "Gesamtfehlerpunkte:". array_sum($array). "<br>";

            echo" <form action="test.php" method="post">  ";

            echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>">  ";

            echo" <input type="hidden" name="counter" value="$i"> ";
            echo" <input type="submit" name="Start" value="Submit">   ";

            ?>
            </body>
            </html>

            Also es soll folgendes passieren:

            jedesmal, wenn ich auf diesen Button drücke, denn soll die Zahl über dem Button immer um 3 erhöht werden.

            also erster klick    Fehlerpunkte 3
            also zweiter klick    Fehlerpunkte 6
            also dritter klick    Fehlerpunkte 9

            1. achja, und ich hab denn bei der ausgabe so ein zecihen vor dem Submit button: ">

              des kommt wohl von der übergabe, aber ich weiss net was an der zeile falsch ist

              1. Huhu Thomas

                habe noch zwei etwas gröbere Schnitzer gefunden

                1. das schliessende FORM-Tag fehlt

                2. diese Zeile ist ziemlich "zerschossen"

                echo" <input type="hidden" name="wurscht" value="<? echo implode("|",$array); ?>"> ";

                besser

                echo" <input type="hidden" name="wurscht" value="".implode("|",$array)."">";

                noch besser (IMHO weil mit_ohne backslash)

                printf '<input type="hidden" name="wurscht" value="%s">',implode('|',$array));

                Viele Grüße

                lulu

                1. subject, that's all

                  1. Danke dir schonmal, ich werd des nachher mal probieren, vielleicht schaff ich es ja diesmal....:-)

  2. $error = explode("|",$_POST["error"]);
    aber es funtioniert nicht, was mache ich falsch ???

    Wenn das Formularfeld zuerst "fehler" heißt, heißt es auch in $_POST "fehler" => $error=explode('|',$_POST['fehler']);

    Achja, brauche ich eigentlich die zeile $error= array(); noch ?

    Bei Zugriff auf nicht initialisierte Variablen (z.B. $var[]='xxx'; ohne ein vorheriges $var=array(); oder $var[0]='xxx'; etc.) wird eine Meldung auf Ebene E_NOTICE ausgegeben, die standardmäßig nicht angezeigt wird. Hier ist das allerdings nicht der Fall, die Zeile ist überflüssig.