ChristianE: Array-Weitergabe per Formular

Hallo,

ich habe mittlerweile schon so viel zu dem Thema gelesen und ausprobiert, dass ich fast der Meinung bin, dass es unmöglich ist. Mein letzter Versuch ist, hier zu fragen.

Ich habe ein HTML-Formular, das als action per Post die Werte an ein PHP-Skript übergibt. Da register_globals auf Off steht, stehen mir die Variablen nicht direkt zur Verfügung, sondern nur so:

$Textfeld = $_POST["Textfeld"];

Das klappt auch soweit.
Wenn ich jetzt aber in dem Formular ein <select multiple> habe, wo ja die Auswahl mehrerer Einträge möglich ist, wird ja ein Array per Post weitergegeben und nicht eine Variable.
Mit register_globals auf On klappt auch das. Aber eben nicht, wenn register_globals auf Off steht.
Das Problem ist, dass $_POST ja schon ein mehrdimensionales Array ist. Und das kann als Wert ja kein weiteres Array enthalten.

Der Lösungsansatz, das Array vor dem Abschicken des Formulares in eine Variable mit einm Komma-separierten String umzuwandeln scheitert auch, denn vor dem Absenden des Formulares steht das Array noch gar nicht zur Verfügung. Es wird ja erst beim Absenden erzeugt.

Aus dem gleichen Grund scheitert auch das Speichern in einer Session. Das einzige, was funktionieren könnte, wäre mit JavaSkript. Das möchte ich aber auf jeden Fall vermeiden.

Habe ich irgendwas bei meinen Überlegungen übersehen? Gibt es vielleicht doch eine Möglichkeit?

Christian

  1. Hi!

    Da register_globals auf Off steht,

    sehr gut

    Wenn ich jetzt aber in dem Formular ein <select multiple> habe, wo ja die Auswahl mehrerer Einträge möglich ist, wird ja ein Array per Post weitergegeben und nicht eine Variable.
    Mit register_globals auf On klappt auch das. Aber eben nicht, wenn register_globals auf Off steht.
    Das Problem ist, dass $_POST ja schon ein mehrdimensionales Array ist. Und das kann als Wert ja kein weiteres Array enthalten.

    sicher, genau das ist ja ein multidimensionaler Array!

    Gucke Dir mal http://www.dclp-faq.de/q/q-formular-select-multiple.html an, udn wenn Du wissen willst was genau im PHP-Script ankommt dann lass es Dir mal mit
    var_dump($_POST);
    anzeigen.

    $_POST['name'] kann eine Variable sein, oder auch ein Array sein, und wie Du einen Array ausliest weißt Du doch sicher, oder?

    Grüße
    Andreas

    1. Gucke Dir mal http://www.dclp-faq.de/q/q-formular-select-multiple.html an,

      Ja, die Seite kenne ich schon. Dort bin ich am Anfang meiner Recherche auch gelandet, aber genau so sah mein Formular schon aus.

      $_POST['name'] kann eine Variable sein, oder auch ein Array sein, und wie Du einen Array ausliest weißt Du doch sicher, oder?

      Ja, das weiß ich.
      Aber
      $multiple[] = $_POST["multiple"];
      funktioniert nicht. Dann gibt nämlich z.B.:
      echo $multiple[0];
      nur "Array" aus.

      1. Hi!

        $multiple[] = $_POST["multiple"];
        funktioniert nicht.

        logisch. Weißt Du was Du da machst? Du weist dem Array $multiple ein weiteres element zu, und als Array weist Du den Array der in $_POST["multiple"] steht zu.

        Dann gibt nämlich z.B.:
        echo $multiple[0];
        nur "Array" aus.

        klar! Um zu verstehen was Du da machst, gib mal anstatt echo $multiple[0]; folgendes aus: var_dump($multiple[0]);

        Versuch es danach mal mit:

        $multiple = $_POST["multiple"];

        Siehe auch http://de3.php.net/manual/de/language.types.array.php, vor allem http://de3.php.net/manual/de/language.types.array.php#AEN3414

        Grüße
        Andreas

        1. Versuch es danach mal mit:

          $multiple = $_POST["multiple"];

          Auch das habe ich schon probiert. Dann ist $multiple einfach nur leer.
          Ich gebe es auf. Ich habe wirklich schon alles mögliche versucht. Ich habe jetzt einfach Checkboxen genommen. Damit geht es.

          Trotzdem vielen Dank für Deine Mühe.

          Christian

          1. Hi!

            Auch das habe ich schon probiert. Dann ist $multiple einfach nur leer.
            Ich gebe es auf. Ich habe wirklich schon alles mögliche versucht.

            Dann hast Du was falsch gemacht, ich verwende das selber. Du hättest Dir mal var_dump($_POST) ausgeben sollen, um zu sehen was überhaupt am Server ankommt. Kannst ja mal den HTML-Code posten.

            Grüße
            Andreas