Lude: 'form'-Element in Tabelle

Hi,

habe mehrere 'form'-Elemente in einer Tabelle in einem 'tr'-Element. Funktioniert ganz ausgezeichnet, aber der XHTML-Validator mag das nicht. Wenn ich aber die 'form'-Elemente noch in 'td'-Elemente packe, wird die Tabelle nicht mehr praezise "skaliert".

Was macht man denn da "am besten"?

Gruss,
Lude

  1. Hi,

    habe mehrere 'form'-Elemente in einer Tabelle in einem 'tr'-Element. Funktioniert ganz ausgezeichnet, aber der XHTML-Validator mag das nicht. Wenn ich aber die 'form'-Elemente noch in 'td'-Elemente packe, wird die Tabelle nicht mehr praezise "skaliert".

    style="margin:0;padding:0;"

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. hi

      style="margin:0;padding:0;"

      als ergänzung vieleicht noch: display: inline;

      so long
      ole
      (8-)>

      --
      Die Summe aller menschlichen Intelligenz ist eine Konstante.
      Das Problem ist das Bevölkerungswachtum...
      sh:( fo:) ch:| rl:° br:& n4:° ie:% mo:} va:| de:] zu:| fl:( ss:) ls: js:|
      If you can't beat 'em...eat 'em !
  2. Hi,

    ich hatte mich bedauerlicherweise unklar ausgedrueckt. Zweiter Versuch:

    HTML-Code:

    <html>
    <body>
     <table>
      <thead>
       <tr>
        <th>N</th>
        <th>Bezeichnung_Name</th>
        <th>Ort_Name</th>
        <th>Kategorie_Name</th>
        <th>Sum</th>
        <th>W</th>
        <th>Count</th>
        <th>Min</th>
        <th>Max</th>
        <th>A</th>
        <th colspan="2">Aktion</th>
       </tr>
      </thead>
      <tr>
       <form action="rr-biz.pl">
        <td><input name="N" type="text" class="ganzflaechig"></input></td>
        <td><input name="Bezeichnung_Name" type="text" class="ganzflaechig"></input></td>
        <td><input name="Ort_Name" type="text" class="ganzflaechig"></input></td>
        <td><input name="Kategorie_Name" type="text" class="ganzflaechig"></input></td>
        <td><input name="Sum" type="text" class="ganzflaechig"></input></td>
        <td><input name="W" type="text" class="ganzflaechig"></input></td>
        <td><input name="Count" type="text" class="ganzflaechig"></input></td>
        <td><input name="Min" type="text" class="ganzflaechig"></input></td>
        <td><input name="Max" type="text" class="ganzflaechig"></input></td>
        <td><input name="A" type="text" class="ganzflaechig"></input></td>
        <td colspan="2"><input type="submit" class="ganzflaechig" value="Filtern!"></input></td>
        <td><input name="Session_GUID" type="hidden" value="8C322173-CD29-4778-9843-D604097B2277"></input></td>
        <td><input name="Sortierung" type="hidden" value="Count"></input></td>
        <td><input name="Query" type="hidden" value="BIZ_FAVORITEN"></input></td>
        <td><input name="WhatToDo" type="hidden" value="FilterQuery"></input></td>
       </form>
      </tr>
      <tr>
       <td>1</td>
       <td>Treff - Discount</td>
       <td>#</td>
       <td>TREFF - KONSUM</td>
       <td>4524.14</td>
       <td>EUR</td>
       <td>663</td>
       <td>1999-11-20 13:50:19.000</td>
       <td>2003-03-25 09:58:47.483</td>
       <td>***</td>
       <td colspan="2"><input type="button" class="ganzflaechig" value="Yo!"></input></td>
      </tr>
      <tr>
       <td>2</td>
       <td>Peter's</td>
       <td>Baden-Baden</td>
       <td>PETERS - KONSUM</td>
       <td>1079.70</td>
       <td>EUR</td>
       <td>592</td>
       <td>1999-01-04 00:00:00.000</td>
       <td>2003-03-25 09:56:34.967</td>
       <td>***</td>
       <td colspan="2"><input type="button" class="ganzflaechig" value="Yo!"></input></td>
      </tr>
    </table></body></html>

    Problem ist, dass das 'form'-Element der ersten Tabellenzeile wegen Muterelement 'tr' vom X(HT)ML-Validator bemeckert wird, weil 'form'-Element kein Tochterelement von "tr" sein darf.

    Packe ich das 'form'-Element aber in ein 'td'-Element und da wieder eine Tabelle rein und darein wiederum die form. sieht es im Browser uebel aus.

    Was tun?

    Gruss,
    Lude

    1. hi

      darum sagen wir ja:

      <form style="display: inline; margin: 0px; padding: 0px;">

      das form nicht in tr stehen darf sollte klar sein.

      so long
      ole
      (8-)>

      1. Hi,

        <form style="display: inline; margin: 0px; padding: 0px;">

        das form nicht in tr stehen darf sollte klar sein.

        ich muss erreichen, dass die Tabellenueberschriften, die erste Zeile und die Folgezeilen in der Breite der Zellen gleich bleiben. Wenn ich in die erste Zeile in das 'tr'-Element ein 'td'-Element und darin ein 'table'-Element dann ein 'tr'-Element dann ein 'td'-element und dann endlich ein 'form'-Element packe, haben die Spalten eine andere Bereite, als die Breite der Tabellenueberschriften bzw. Folgezeilen.

        Hilfe!!!!!

        Gruss,
        Lude

    2. Hallo Lude,

      Was tun?

      <form> ganz außen um die Tabelle:

      <form ...>
      <table>
      ...
      </table>
      </form>

      Das margin:0; padding:0; display: inline; müßte es aber auch tun.

      Viele Grüße,
      Christian

      --
      Hast Du einen Beitrag? Nur her damit!
      http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
      SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
      sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[
      1. Hallo Christian!

        Vielleicht kannst Du mir ja helfen?

        Das margin:0; padding:0; display: inline; müßte es aber auch tun.

        (Dann habe ich das Problem, dass die Spaltenbreite eine andere ist als anderswo in der Tabelle.)

        Ich hole mal ein bisschen weiter aus, was ich tue: Ich habe ein Perl-Script, dass a) eine (grundsaetzlich eine beliebige aber fuer "Filterzwecke" angepasste) SQL-Abfrage per ODBC ausfuehrt b) fuer die von der Abfrage zurueckgegebene Datensatzmenge b1) eine Tabellenueberschrift erstellt b2) eine erste Tabellenzeile schreibt, die eine 'form' beinhaltet, die wenn abgesendet die unter a) bezeichnete SQL-Abfrage mit "Filterparametern" erneut ausfuehrt b3) die erhaltenen Datensaetze in Tabellenzeilen in "forms" schreibt, die wenn abgesendet ein UPDATE bzw. DELETE auf dem Datensatz durchfuehren b4) ganz unten in der Tabelle eine Tabellenzeile in eine 'form' schreibt, die wenn abgesendet ein INSERT bewirkt.

        Das erinnert an die DataGrids in Visual Basic.

        Funktionieren tut alles ganz prima, nur der X(HT)ML-Validator meckert natuerlich.

        Wie schaffe ich es in eine Tabelle n "forms" zu setzen und die Breite der Felder gleich zu halten?

        Gruss,
        Lude

        1. Hallo Lude,

          Wie schaffe ich es in eine Tabelle n "forms" zu setzen und die Breite der Felder gleich zu halten?

          In diesem Fall solltest Du vielleicht mal doch mit dem Gedanken spielen, mehrere Tabellen zu verwenden:

          <html>
          <body>
           <table>
            <colgroup>
             <col width="...">
             <col width="...">
             ...
            </colgroup>
            <thead>
             <tr>
              <th>N</th>
              <th>Bezeichnung_Name</th>
              <th>Ort_Name</th>
              <th>Kategorie_Name</th>
              <th>Sum</th>
              <th>W</th>
              <th>Count</th>
              <th>Min</th>
              <th>Max</th>
              <th>A</th>
              <th colspan="2">Aktion</th>
             </tr>
            </thead>
           </table>
           <form action="rr-biz.pl">
           <table>
            <colgroup>
             <col width="...">
             <col width="...">
             ...
            </colgroup>
            <tr>
             <td><input name="N" type="text" class="ganzflaechig"></input></td>
             <td><input name="Bezeichnung_Name" type="text" class="ganzflaechig"></input></td>
             <td><input name="Ort_Name" type="text" class="ganzflaechig"></input></td>
             <td><input name="Kategorie_Name" type="text" class="ganzflaechig"></input></td>
             <td><input name="Sum" type="text" class="ganzflaechig"></input></td>
             <td><input name="W" type="text" class="ganzflaechig"></input></td>
             <td><input name="Count" type="text" class="ganzflaechig"></input></td>
             <td><input name="Min" type="text" class="ganzflaechig"></input></td>
             <td><input name="Max" type="text" class="ganzflaechig"></input></td>
             <td><input name="A" type="text" class="ganzflaechig"></input></td>
             <td colspan="2"><input type="submit" class="ganzflaechig" value="Filtern!"></input></td>
             <td><input name="Session_GUID" type="hidden" value="8C322173-CD29-4778-9843-D604097B2277"></input></td>
             <td><input name="Sortierung" type="hidden" value="Count"></input></td>
             <td><input name="Query" type="hidden" value="BIZ_FAVORITEN"></input></td>
             <td><input name="WhatToDo" type="hidden" value="FilterQuery"></input></td>
            </tr>
           </table>
           </form>
           <table>
            <colgroup>
             <col width="...">
             <col width="...">
             ...
            </colgroup>
            <tr>
             <td>1</td>
             <td>Treff - Discount</td>
             <td>#</td>
             <td>TREFF - KONSUM</td>
             <td>4524.14</td>
             <td>EUR</td>
             <td>663</td>
             <td>1999-11-20 13:50:19.000</td>
             <td>2003-03-25 09:58:47.483</td>
             <td>***</td>
             <td colspan="2"><input type="button" class="ganzflaechig" value="Yo!"></input></td>
            </tr>
            <tr>
             <td>2</td>
             <td>Peter's</td>
             <td>Baden-Baden</td>
             <td>PETERS - KONSUM</td>
             <td>1079.70</td>
             <td>EUR</td>
             <td>592</td>
             <td>1999-01-04 00:00:00.000</td>
             <td>2003-03-25 09:56:34.967</td>
             <td>***</td>
             <td colspan="2"><input type="button" class="ganzflaechig" value="Yo!"></input></td>
            </tr>
          </table></body></html>

          Ist zwar nicht die sauberste Lösung, aber *anscheinend* die einzig brauchbare verglichen mit invalidem HTML. Wichtig sind hierbei die <colgroup>/<col>-Abschnitte, die die Breiten der Spalten festlegen. Du kannst auch statt

          <col width="...">

          lieber

          <col class="spalteX">

          verwenden und dann in CSS mit

          .spalteX { width: 122px; }

          die Breite definieren. (Klappt zumindest im Mozilla bei mir, andere Browser müßtest Du testen)

          Dann musst Du die Angaben nicht an zwanzig Stellen verändern, wenn Du die Breite einer Spalte verändern willst.

          Hoffentlich habe ich Dein Problem richtig erkannt und konnte Dir weiterhelfen.

          Viele Grüße,
          Christian

          --
          Hast Du einen Beitrag? Nur her damit!
          http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
          SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
          sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[