Zum Inhalt springen

Ein form pro Tabellenzeile


azett

Empfohlene Beiträge

Salut,

ich generiere eine Tabelle, deren Zeilen immer gleichnamige input-Elemente beinhalten:


+-------------+-------------+----------+

| [textfeld1] | [textfeld2] | [SUBMIT] |

+-------------+-------------+----------+

| [textfeld1] | [textfeld2] | [SUBMIT] |

+-------------+-------------+----------+

|    ...      |     ...     |    ...   |

Beim Klick auf einen Submit-Button sollen die Werte aus dessen Zeile per GET zur Auswertung übergeben werden. Also wollte ich ein Formular pro Zeile bauen...form-Tags sind innerhalb von tables aber nicht erlaubt. Deswegen schreibe ich momentan als Workaround für jede Zeile eine neue Tabelle, die von einem <form> umschlossen wird. Das zerschießt mir durch verschieden breite Inhalte natürlich derb die Optik, aber so richtig will mir auch nichts einfallen, wie ich das optisch und technisch sauber lösen kann.

Steh da grad aufm Schlauch. Hat jemand eine Idee, wie ich gleichzeitig

  • eine einzige Tabelle
  • mit einem Formular pro Zeile

realisieren kann?

Merci..

..azett

Link zu diesem Kommentar
Auf anderen Seiten teilen

...form-Tags sind innerhalb von tables aber nicht erlaubt.

SelfHTML sagt das aber anders:

Darf innerhalb der folgenden HTML-Elemente vorkommen:

applet | blockquote | body | button | center | dd | del | div | fieldset | iframe | ins | li | map | noframes | noscript | object | td | th

EDIT:

Oder meinst du innerhalb eines tr, und die td beinhalten?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Merci für's Nachschauen!

Ich brauche ein Formular pro Tabellenzeile (siehe dein Edit ;) ), also vom Prinzip her so:

<table>

 <tr>

  <form>

   <td>Textfeld1</td>

   <td>Textfeld2</td>

   <td>Button</td>

  </form>

 </tr>

 <tr>

  <form>

   <td>Textfeld1</td>

   <td>Textfeld2</td>

   <td>Button</td>

  </form>

 </tr>

 ...

</table>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wenn du das so machen willst und für jede Zeile ein form haben willst, dann musst du jedesmal die Tabelle schließen.

Evtl könntest du ein Form um die ganze Tabelle machen und den Speichervorgang via AJAX durchführen, dann wäre das auch bestimmt schöner für den User zu bedienen...

Ausserdem kann man ja auswerten auf der Serverseite, welcher Submutbutton gedrückt wurde, da nur der name des SubmitButtons übermittelt wird, der auch angeklickt worden ist. Die anderen werden nicht in den _POST bzw _GET Variablen aufgeführt...

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ausserdem kann man ja auswerten auf der Serverseite, welcher Submutbutton gedrückt wurde, da nur der name des SubmitButtons übermittelt wird, der auch angeklickt worden ist. Die anderen werden nicht in den _POST bzw _GET Variablen aufgeführt...
Das hat geholfen, vielen Dank :)

Mein Code, vereinfacht:

<form>

 <table>

  <tr>

   <td><input type="text" name="datensatz1_wert1"></td>

   <td><input type="text" name="datensatz1_wert2"></td>

   <td><input type="image" name="submit" value="datensatz1" src="foo.gif" /></td>

  </tr>

  <tr>

   <td><input type="text" name="datensatz2_wert1"></td>

   <td><input type="text" name="datensatz2_wert2"></td>

   <td><input type="image" name="submit" value="datensatz2" src="foo.gif" /></td>

  </tr>

  ...

 </table>

</form>

Jetzt kann ich mit $_GET['submit'] herausfinden, um welchen Datensatz es geht...und dann entsprechend mit $_GET[$_GET['submit'].'_wert1'] usw. die Daten der Textfelder auslesen.

Allerdings gebe ich so natürlich die Input-Values aller Zeilen mit...je nach Anzahl der Datensätze ein ganz schöner Rattenschwanz ;)

Ein Problem taucht noch auf, wenn ich etwas in ein Textfeld in einer beliebigen Zeile außer der ersten eintrage und dann Enter drücke. Das Formular wird abgeschickt, als "submit" bekomme ich aber immer "datensatz1", also den Namen des Submit-Inputs der ersten Zeile. Die Auswertung bezieht sich dann natürlich immer auf die erste Zeile. Das ist ärgerlich, aber für mich im schlimmsten Fall noch hinzunehmen. Der aktuelle Stand ist jedenfalls besser als das "Eine-Tabelle-pro-Zeile"-Gefrickel.

Evtl könntest du ein Form um die ganze Tabelle machen und den Speichervorgang via AJAX durchführen
Maximalziel ist eine JS-freie Umsetzung. ;)

Merci für die Ideen, nehme weitere Vorschläge natürlich dankend entgegen :)

..Arvid

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...