Gibt es irgendwelche Regeln über Tabellenlayouts



  • Hallo,

    ich möchte Tabellen einer Datenbank nicht-interaktiv darstellen.
    Also nicht so, dass sich der Anwander sortieren oder die Breite der Spalten ändern kann.
    Allerdings sind die Tabellen, was die Länge der Textinhalte angeht, vorher unbekannt und werden erst zur Laufzeit ausgelesen.

    Jetzt weiß ich nicht, wie ich die Breite der Tabelle berechnen sollte.
    Nehme ich die Breite der Kopfzeile (z.b. 4 Zeichen für 'Name') dann passen ja die eigentlichen Daten nicht rein und 4 Buchstaben sind zu wenig.
    Gehe ich alle Reihen durch, und mache die Spalte sobreit, wie den längsten Namen, wäre das ja Platzverschwendung, wenn 90% der Namen nur 10 Buchstaben lang wären und einer 40.
    Wie kann man das ausrechnen, dass es einerseits intelligent selbständig und doch einigermaßen schön aussieht?
    Steht sowas vielleicht irgendwo, wie es ja auch Regeln zur Formatierung von dem Datum gibt, oder zur Zeichensetzung.
    Es gibt doch sonst für alles ein Gesetz.



  • Keine Ahnung, ob's ein Gesetz gibt 🙂

    Ich mache es so, dass eine Zeile beim ersten gezeichnet werden prüft, ob die Breite reicht. Wenn nicht, wird die Spalte verbreitert. Das führt zwar ab und zu dazu, dass sich beim Scrollen eine Spalte verbreitert, aber dafür ist stets alles zu lesen, ohne dass ich dafür vorab für hundertausend Datensätze prüfen muss, wievel Platz benötigt wird.

    Alternative ist, du lässt den User doch die Spaltenbreite einstellen und speicherst diese ab. Soll sich doch der User damit rumärgern 🙂



  • Welche Datenbank.

    MySQL liefert dir die max Spaltenbreite bezogen auf den Inhalt. ODBC kann sowas nicht da man hier nichtmal die Anzahl Datensätze der Ergebnismenge bekommt.



  • frenki schrieb:

    Alternative ist, du lässt den User doch die Spaltenbreite einstellen und speicherst diese ab. Soll sich doch der User damit rumärgern

    ROFL , so mach ich es sonst auch immer.
    Aber diesmal soll ein PDF durch PHP gerendert werden. Und es geht ja gerade
    um die selbständige Einteilung der Tabelle.
    Deswegen müssen die Spaltenbreiten schon vorher feststehen.
    Es ist wohl nicht so schlimm, wenn mal ein Feld beschnitten wird. Hauptsache, man sieht, was ungefähr drin steht und es sieht halbwegs intelligent aus.
    Ich will aber nicht erst eine Silbentrennung implementieren.

    Es wird eine MySQL Tabelle ausgelesen, aber ich speichere sie eh wegen der Layoutberechnungen in einem Array zwischen.
    Und die Feldbreite ist ja nicht 100% proportional zu der realen Breite.
    Deswegen prüfe ich jeden String vorher durch.

    Die Breiten aller Felder liegen also vor, es geht mir mehr darum, wie man daraus die "optimale" Breite errechnet.
    Also z.b. den arithmetischen Mittelwert, oder über Normalverteilung.
    Es heißt ja, dass Menschen einen 2/3 Schnitt als ästhetisch empfinden.


Anmelden zum Antworten