PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HTML: Tabelle in Formular mit einbeziehen (soll in GET/POST-Variablen vorhanden sein)


LordZed
2008-09-22, 09:35:02
Hi!

Folgendes Szenario: Ich habe ein Formular in dem unter anderem zwei Tabellen vorhanden sind. Diese werden über JavaScript vom User gefüllt. Ist irgendwie die einzige Möglichkeit eine Tabelle in ein Formular mit einzubauen hab ich das gefühl, denn ein Tabellen-Element scheint es bei den HTML-Form-Elementen nicht zu geben.

Nun möchte ich, dass diese Tabellen natürlich ebenfalls bei den Daten enthalten sind, die später per GET/POST gesendet werden. Werden sie so einfach aber nicht, da es ja keine Formular-Elemente sind. Wenn ich jetzt in jede Zelle einfach ein Textfeld reinsetze hätte ich dieses Problem schonmal gelöst... allerdings hab ich dann keine Ahnung wie lang die Tabelle ist, also wieviele Zeilen diese beinhaltet, denn der User kann beliebig viele Zeilen hinzufügen und auch welche aus der Mitte wieder entfernen.

Am besten wäre es also, wenn die Daten irgendwie als Array mit in die GET/POST-Daten mit einfließen... ob das geht weiß ich nicht, darum wende ich mich an euch mit der Hoffnung, jemand hat nen Lösungsansatz für mich! ;)

Sephiroth
2008-09-22, 15:58:36
??? :confused:

<form>
<table>
<!-- zeilen und spalten mit den input-feldern-->
</table>
</form>

DanMan
2008-09-22, 18:13:56
??? :confused:

<form>
<table>
<!-- zeilen und spalten mit den input-feldern-->
</table>
</form>
Nene, er meint die Ausgabeseite, glaube ich.

@Threadstarter: Es würde helfen, wenn du sagen könntest, wie du die Daten weiterverwenden willst.

BoneDaddy
2008-09-22, 18:37:45
Ganz einfach, mach eine Tabelle und pack in jede Zelle ein Inputfeld. Die Bezeichnung machst du dann einfach dynamisch
<input type="text" name="row[1][2]" />

in $_POST steht dann in $row[1][2] der Wert des Inputs.

LordZed
2008-09-22, 22:46:00
Ganz einfach, mach eine Tabelle und pack in jede Zelle ein Inputfeld. Die Bezeichnung machst du dann einfach dynamisch
<input type="text" name="row[1][2]" />

in $_POST steht dann in $row[1][2] der Wert des Inputs.
Sieht aber sehr unschön aus. Habs jetzt so gelöst, dass in jeder Zelle ein verstecktes Input-Feld ist. Die Felder heißen in allen Spalten gleich, wodurch ich auf der nächsten Seite dann pro Spalte ein Array habe. Dachte der überschreibt das, aber der bildet da echt nen Array draus, wenn mehrere Eingabefelder mit dem selben Namen per POST oder GET übergeben werden.

BoneDaddy
2008-09-23, 12:03:55
wie meinst du das, es sieht unschön aus?
Um Formularelemente zu stylen, brauchst du doch nur CSS.
Mehreren Inputs den selben Namen zu geben, ist IMHO nicht standard, die Lösung mit der Array-Schreibweise jedoch schon.

LordZed
2008-09-23, 23:11:34
wie meinst du das, es sieht unschön aus?
Um Formularelemente zu stylen, brauchst du doch nur CSS.
Mehreren Inputs den selben Namen zu geben, ist IMHO nicht standard, die Lösung mit der Array-Schreibweise jedoch schon.
In diesem einen Fall - da es nur einen kleinen internen Kreis trifft - ist mir das mit dem Standard egal, da es ungleich umständlicher für mich wär die immer so in die Arrays einzusortieren, dass da keine leeren Felder zwischen sind, die durch löschen von Zeilen oder so entstanden sind. Außerdem kann ich mit JSP mit getParameter() keine Arrays auslesen und dann kann ich auch direkt allen unterschiedliche Namen geben.

Wie gesagt! Es funktioniert so, wie ich es mache und da es garantiert ist, dass alle die die Seite zu sehen bekommen den selben Browser haben wie ich, ist es in Ordnung so - Standard hin oder her! ;) ^^

Sephiroth
2008-09-24, 00:28:22
Hast du ein Beispiel oder Screenshot wie das aussieht? Ich muss wohl heute etwas auf'm Schlauch stehen, weil ich's immer noch nicht gerafft habe, was du machst bzw. machen möchtest.


Du hast eine Tabelle (oder zwei) und in die Zellen werden ausgefüllt vom Benutzer
Du hast eine Seite, auf der die User über JavaScript sich Tabellen zusammenstellen können und du willst den HTML-Code der Tabellen
was ganz anderes

LordZed
2008-09-29, 22:35:46
Ich habe eine Seite mit einigen Formularfeldern. Abgesehen von diesen Formularfeldern existiert auch noch eine HTML-Tabelle auf der Seite die mit einem JavaScript gefüllt werden kann (neue Zeilen hinzu, bestehende löschen). Da es sich ja bei einer HTML-Tabelle nicht um ein Formular-Tag handelt wird es standartmäßig nicht per POST/GET übertragen. Das habe ich gelöst indem ich unsichtbare Felder in jede Zelle schreibe, welche die Werte noch einmal beinhalten - ja ich weiß es geht auch anders, aber jetzt hab ichs halt grad so gelöst. Diese Werte gilt es nun auszuwerten ohne genau zu wissen wieviele Zeilen die Tabelle beinhaltet. Das habe ich halt jetzt so gelöst, dass die unsichtbaren Felder den selben Namen haben, wodurch sich beim auslesen ein Array bildet, dessen größe ich auslesen kann. Funktioniert einwandfrei, es gibt in JSP bzw. Java eine Funktion, die genau das kann also weiß ich nicht, wieso es so verboten sein sollte. Funzt alles wunderbar also *THUMBS UP*