Hallo,
für ein Formular möchte ich eine Tabelle aufbauen. Ich war schoneinmal sehr nah an dem wie ich es eigentlich haben wollte, habe dann aber aus Optimierungseifer wieder alles mögliche umgeworfen. Fazit: Meine Tabelle sieht jetzt einfach total vermurkst aus! Kannn mir jemand bei dem Aufbau helfen? Ich bin noch ein Anfänger, also bitte steinigt mich nicht
sry, hat man vllt bischen falsch verstanden. Die Tabelle ist nur ein Auszug aus meiner ganzen html datei. Das Grundgerüst ist natürlich vorhanden. Was hast du mit dem Head-Tag gemeint in der Zelle? Da ist doch gar keiner?!
(Nicht zum eigentlichen Problem, eher generell: die Idee der Id ist, dass sie einmalig ist. Bei dir taucht ein und die selbe Id (»menge«) ständig auf. Als Name hast du »menge« auch erstaunlich oft vergeben. Bist du dir sicher, dass es den Type »int« für Input-Felder gibt? Wie gesagt: alles nicht zum Thema …)
Außerdem hat du mehrfach ein form-Tag aufgemacht und nicht wieder geschlossen. Ein form innerhalb eines anderen forms ist nicht zulässig.
An den Darstellungsfehler ändert das vermutlich nichts, aber kann später zu größeren Problemen bei der Verarbeitung der Daten kommen…
Wie bodil schon richtig angemerkt hat, sollte der Name der Inputfelder dem Inhalt entsprechen. Den Typ „int“ gibt es nicht, allenfalls „number“. In der Regel verwendet man jedoch „text“.
Da bei dir einiger Code „verrutscht“ (Copy-Paste-Fehler?) und ziemlich durcheinader ist, würde ich eigentlich empfelhlen, nochmal sauber neu anzufangen.
Da Du keinen HTML5-Doctype hast, solltest Du den Typ text verwenden.
Außerdem ist dein HTML-Code weit entfernt davon valide zu sein. Den müsstest Du gründlich ausmisten, die Tipps oben sollten da schonmal helfen. Außerdem ein Blick in den Validator.
Unabhängig davon würde ich eher raten auf dieses Tabellenkonstrukt komplett zu verzichten und alles per , und den Formularfeldern zu machen. Mit CSS gestaltet erreicht man da eigentlich die selbe Ansicht wie mit deiner Tabelle - mit viel weniger Code.
Hallo,
hab jetzt meinen Code nochmal gründlich überarbeitet, auch mit dem Validator.
Code sollte jetzt etwas sauberer sein, wenn auch nicht perfekt…
Mein Problem ist, dass ich eigentlich immer 2 Felder habe. Als Beispiel: Ganz oben steht Lieferant und daneben soll der Nutzer dann seinen Lieferanten eingeben. Problem entsteht jetzt bei der 3. Zeile, da hier erst PLZ abgefragt und dann direkt der Ort, also quasi beides in einer Zeile. D.H es sind insgesamt 4 Felder in dieser Zeile. Dadurch verrutsch das komplette Tabellengerüst. Und ich bekomms einfach nicht hin…Klar könnt ichs auch untereinander machen, aber ich fänds so einfach schöner und es muss ja wohl auch irgendwie funktionieren. Du meintest jetzt ich soll mehr mit fieldsets und labeln arbeiten und das ganze dann mit CSS richtigstellen. Ich hab das zu spät gelesen und jetzt komplett andersrum gemacht und nur mit Tabellen. Aber vielleicht hast du recht und mit CSS ist es weitaus kürzer und einfacher zu regeln, aber leider habe ich da auch nicht so wirklich die Erfahrung. Aber vielleicht könnt ihr jetzt nochmal meinen Code anschauen und was dazu sagen wie ich dass irgendwie hinkriegen könnt.
[HTML]
Anforderung
<strong>Felder mit einem (*) sind Pflichtfelder und müssen ausgefüllt werden.</strong>
<strong>Bitte Daten eingeben:</strong>
Ich hab den Code angepasst. Das mit dem Body und Head war natürlich ein C&P Fehler und der Teil gehört natürlich auch gar nicht mitten in den html code. Bei meinem vorigen Post ist der neue Code gepostet. Mein Problem besteht leider immernoch…
Jetzt hast du alle Form-Tags rausgeworfen. Einer ist aber auf jeden Fall nötig, sonst passiert gar nichts.
Aber zu deinem Darstellungsproblem: Natürlich gibt es Probleme wenn eine Tabellenzeile nur 2 Zellen hat, die nächste dafür deren 4. Also entweder fügst du in die Zeile mit 2 Zellen weitere, leere Zellen ein, oder du nutzt das „colspan“-Attribut, um Zellen zu verbinden.
Oder aber du wirfst die Tabellen komplett aus dem Fenster…
Ok, wo sollte ich das Form-Tag am besten platzieren oder ist das egal?
Das mit dem Colspan Attribut habe ich auch schon probiert aber irgendwie will auch das nicht richtig funktionieren. Ich dachte dadurch, dass ich 2mal eine 4spaltige Zeile habe, muss ich bei allen anderen Zeilen die ja nur 2spaltig sind, ein colspan=„3“ an das 2. Feld der Zeile machen, damit dieses Eingabefeld sich quasi die restlichen 3 Spalten überstreckt, aber das funktioniert nicht. Auch alle anderen Versuche mit dem colspan Attribut sind missglückt. Ich glaube das hängt mit der inneren Tabelle zusammen, da nutze ich auch den Colspan und es funktioniert
Dein Problem liegt in der Tabelle und den Größenangaben im HTML. Ich weiß ja nicht, was du mit diesem Formular vorhast, aber sofern du die Eingaben weiterverarbeiten und speichern will, solltest du den name-Attributen unterschiedliche Werte geben.
Der richtige Ansatz wäre, sich erst einmal Gedanken über die Funktionalität zu machen. Woher sollen die Daten kommen, wohin sollen sie gehen, und was soll mit ihnen passieren? Dafür würde ein winziges Formular mit ein oder zwei input-Elementen und einem Button völlig ausreichen. Wenn darüber Klarheit besteht und alles wie gewünscht funktioniert, dann dupliziert man den Code. Das Styling kommt erst ganz am Ende.
Als Tipp am Rande: Üblicher Weise bezieht man die Daten aus einer Datenbank und legt sie auch dort wieder ab. Die notwendige Anzahl von input-Elementen wird dabei dynamisch durch PHP-Schleifen erzeugt. Insofern bringt es auch wenig, das alles als statisches HTML zu schreiben.
Ja das mit den Name-Attributen weiß ich und des kommt sicher auch noch. Ich hab einfach ein Darstellungsproblem. Und klar macht man sich erst Gedanken wie das ganze Formular an sich funktionieren soll und das weiß ich auch. Aber ich für meinen Teil möchte jetzt erst mein Darstellungsproblem lösen, weil ich mit dem Rest sicher klar komm. Das weiß ich…Ich habe halt im mittelteil viel kopiert und natürlich kommt dann überall das gleiche Name-Attribut vor, aber das ist nicht mein Problem!
PS: Ich versteh nicht ganz warum bei einem Formular Daten erst aus der Datenbank ausgelesen werden, aber das sie eingelesen werden ist klar und auch kein Problem. Und ich brauch auch keine PHP-Schleifen weil es nunmal ein statisches Formular ist was sich niemals verändern wird. Es soll ausgefüllt werden und in die Datenbank gespeichert werden. Und das ist beides nicht mein Problem. Es geht mir einzig um die momentan Darstellung. Und wenn du sagst, dass mein Problem in der Größenangabe der Tabellen liegt, könntest du das bitte noch ein bisschen ausführen? Auch mit den Größenangaben habe ich schon viel experimentiert, aber ich komm einfach nicht auf den grünen Zweig. Würd mich um Hilfe echt sehr freuen:)
Ich hab ehrlich gesagt nicht so genau verstanden, wie das ganze am Ende aussehen soll. Da sind Zeilen mit 2 und Zeilen mit 4 Zellen. Ein bisschen siehts aus, als hättest du versucht, die Spaltenbreite dadurch zu beeinflussen, indem du in die Input-Felder size-Angaben gemacht hast. Oder ist das Absicht? Size kenne ich als Parameter nicht. HTML 4.01 übrigens auch nicht. Oder?
Sieht komisch aus:
[HTML][/HTML]
Hätte ich eher so erwartet:
[HTML][/HTML]
Ja das mit den Zellen habe ich ja schon versucht zu erklären. Ganz oben im Formular steht „Lieferant“ + input, sind also 2 Zellen. PLZ und Ort möchte aber zusammen mit den inputs in eine Zeile bekommen, also habe ich in dieser Zeile 4 Zellen. Dann kommt die innere Tabelle. Ich dachte da ich durch meine PLZ und Ortsangabe eine 4 spalten Tabelle habe muss ich die innere Tabelle mit einem colspan=„4“ erweitern, sonst würde die komplette innere Tabelle ja nur in die erste Spalte geschrieben werden. Das sieht auch ganz gut aus. Nur die Zeile mit PLZ und Ort (und die weiter unten mit Gesamtpreis und Wunschdatum) verschiebt sich. Ach vielleicht muss ich PLZ und Ort doch untereinander machen, auch wenn mir das so eigentlich nicht gefällt…
Dann solltest du mal versuchen, in allen Zeilen auf die selbe Zellenzahl zu kommen, sei es durch tatsächlich vorhandene Zellen oder durch in Zellen eingefügte Colspans.