flyingeagle: dynamisches form an php übergeben

hi,

ich mache mit javascript immer ein feld zu einem formular dazu (da ich nicht weiß wie viele ich am anfang brauche) jetzt will ich dieses formular natürlich weiterverarbeiten können doch leider komm ich mit meinem php script nicht an die dynamischen felder dran.

funktioniert das gar nicht oder gibts da nen trick?

  1. Hi,

    funktioniert das gar nicht oder gibts da nen trick?

    weder noch. Das Formular muss schlicht und ergreifend abgeschickt werden.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. hmm dann muss ich nochmal alles checken hatte das genau so gemacht wie ichs mit nem normalen form auch mache halt nur mit schleife und das mit dem versteckten feld hatte ich auch. aber bei mir blieb die ausgabe leer naja mal sehen :-)

      1. Heyho!

        hmm dann muss ich nochmal alles checken

        Was spricht gegen meine Lösung?

        Chapeau! ;)

        Mastershrimp

        --
        Kämpft für die Rettung von dem Genitiv!
  2. Heyho!

    Schreibe in ein verstecktes Feld die momentane Anzahl der Eingabefelder und benenne diese nach einem Schema ("Feld_1", "Feld_2",...).

    Wenn nun das Formular abgeschickt wird, weißt du ja (aufgrund des Wertes in dem versteckten Feld, das ja auch abgeschickt wird), wieviele Eingabefelder es gibt.

    Die musst du dann einfach nur noch mit einer Schleife abfragen:

    for($i=1; $i<$verstecktes_feld; $i++)
    {
    $feldname = "Feld_" . $i;
    $array_eingabe_werte[] = $_POST[$feldname];
    }

    Die Werte des Eingabeformulars werden also in den Array $array_eingabe_werte eingetragen und lassen sich damit bequem weiterverwenden.

    Chapeau! ;)

    Mastershrimp

    --
    Kämpft für die Rettung von dem Genitiv!
    1. Moin!

      Schreibe in ein verstecktes Feld die momentane Anzahl der Eingabefelder und benenne diese nach einem Schema ("Feld_1", "Feld_2",...).

      Wenn nun das Formular abgeschickt wird, weißt du ja (aufgrund des Wertes in dem versteckten Feld, das ja auch abgeschickt wird), wieviele Eingabefelder es gibt.

      Viel zu kompliziert.

      Wenn man die hinzufügbaren Felder alle mit dem gleichen Namen belegt, dann erkennt PHP nur ein einziges dieser Felder (das letzte im Formular). Gibt man dem Namen ein [] hinzu, legt PHP ein Array an.

      Also <input name="variabelfeld[]" ...> statt <input name="variabelfeld" ...>

      for($i=1; $i<$verstecktes_feld; $i++)
      {
      $feldname = "Feld_" . $i;
      $array_eingabe_werte[] = $_POST[$feldname];
      }

      Vom Umkopieren der Formularergebnisse in andere Arrays, ohne dass damit was passiert, halte ich absolut nichts. $_POST ist eine absolut normale Variable, mit der man arbeiten darf!

      Die Werte des Eingabeformulars werden also in den Array $array_eingabe_werte eingetragen und lassen sich damit bequem weiterverwenden.

      Die Werte des Eingabeformulars waren vorher im Array $_POST und konnten dort schon bequem weiterverwendet werden.

      - Sven Rautenberg

      1. Also <input name="variabelfeld[]" ...> statt <input name="variabelfeld" ...>

        Wie würde man dann darauf zugreifen? $_POST['variabelfeld[]']; ? Oder wie?

        Chapeau! ;)

        Mastershrimp

        --
        Kämpft für die Rettung von dem Genitiv!
        1. Moin!

          Also <input name="variabelfeld[]" ...> statt <input name="variabelfeld" ...>

          Wie würde man dann darauf zugreifen? $_POST['variabelfeld[]']; ? Oder wie?

          Nein. Wie du ja schon angewendet hast, erzeugt PHP beim Verwenden des Variablennamens mit eckigen Klammern ein Array und hängt hinten den zugewiesenen Wert an.

          Die Übermittlung einer Serie von Variablennamen mit [] dran wirkt also so:

          $wert[] = "inhalt";
          $wert[] = "inhalt2";
          $wert[] = "inhalt3";

          Resultat ist ein Array, auf dessen Felder man mit $wert[0] etc. zugreifen kann.

          Als zweites: Wenn register_globals = off sind, wird beim Feldnamen "wert" nicht $wert angelegt, sondern nur $_POST["wert"].

          Und den Rest darfst du dir jetzt selbst zusammensetzen...

          - Sven Rautenberg

          1. Ok. Danke!
            Ich glaube ich hab's jetzt halbwegs.

            Mein Weg ist aber auch nicht so schlecht. Und er ist auch nicht sooo viel aufwendiger.

            Chapeau! ;)

            Mastershrimp

            --
            Kämpft für die Rettung von dem Genitiv!
            1. Moin!

              Ok. Danke!
              Ich glaube ich hab's jetzt halbwegs.

              Mein Weg ist aber auch nicht so schlecht. Und er ist auch nicht sooo viel aufwendiger.

              Doch, ist er. :)

              Erstens brauchst du ein zusätzliches Hidden-Feld, in das die generierten Feldnamen eingetragen werden. Zweitens kopierst du basierend auf diesen Feldnamen dann die Formularfelder in ein zweites Array.

              Das sind zwei Stellen, die die Sache komplizierter machen - und zwar unnötig komplizierter. Warum muß man etwas zu Fuß selbst erledigen, wenn der Computer es praktisch automatisch für einen tut?

              - Sven Rautenberg

      2. Hello,

        Vom Umkopieren der Formularergebnisse in andere Arrays, ohne dass damit was passiert, halte ich absolut nichts. $_POST ist eine absolut normale Variable, mit der man arbeiten darf!

        was hältst Du denn dann von einer Referenz (Alias) auf das ggf. tief in der Struktur liegende Subarray:

        $_POST['data']['checks']['rights']['create']='0'
                                            ['read']  ='1'
                                            ['alter']
                                             ...
          $rights = &$_POST['data']['checks']['rights'];

        echo $rights['create'];

        Habe ich es denn jetzt richtig herum gemacht? *schluck, Alzheimer*

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  3. Hello,

    könntest Du den Code in JS bitte mal zur Verfügungs stellen (ggf. per mail, falls das für hier zuviel ist). Ich brech mir damit nämlich schon lange einen ab und komme nicht zurecht damit.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau