dynamisches form an php übergeben
flyingeagle
- javascript
0 Cheatah0 Mastershrimp0 Tom
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?
Hi,
funktioniert das gar nicht oder gibts da nen trick?
weder noch. Das Formular muss schlicht und ergreifend abgeschickt werden.
Cheatah
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 :-)
Heyho!
hmm dann muss ich nochmal alles checken
Was spricht gegen meine Lösung?
Chapeau! ;)
Mastershrimp
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
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
Also <input name="variabelfeld[]" ...> statt <input name="variabelfeld" ...>
Wie würde man dann darauf zugreifen? $_POST['variabelfeld[]']; ? Oder wie?
Chapeau! ;)
Mastershrimp
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
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
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
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
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