Christoph: Verzögerte Darstellung einer Tabelle

Hallo Zusammen,

ich hab folgendes Problem: ich möchte auf meiner Seite ein Formular mit sehr vielen Eingabefeldern, dargestellt als Tabelle, mit einem Submit und Cancel Button darunter erstellen. Das Problem, bzw. eher Problemchen, ist nun, dass die Buttons bereits dargestellt werden, bevor die Tabelle angezeigt wird, was sehr unschön aussieht. Die Seite wird mit PHP programmiert, und ich hab bereits versucht eine gleichzeitige Darstellung von Tabelle und Buttons durch Buffering (ob_start, ob_get_contents,...) zu erreichen. Ich habe auch versucht, zuerst die (gebufferte) Tabelle und dann danach die (gebufferten) Buttons mit echo auszugeben, was wieder dazu geführt hat, dass zuerst die buttons erscheinen. Das Problem besteht bei Firefox, Opera und Internet Explorer. Falls mir jemand weiterhelfen könnte, wäre ich sehr dankbar.

Grüße
Christoph

  1. Hallo Christoph!

    ich hab folgendes Problem: ich möchte auf meiner Seite ein Formular mit sehr vielen Eingabefeldern, dargestellt als Tabelle, mit einem Submit und Cancel Button darunter erstellen. Das Problem, bzw. eher Problemchen, ist nun, dass die Buttons bereits dargestellt werden, bevor die Tabelle angezeigt wird, was sehr unschön aussieht.

    Hm...
    Das kann ich mir im Moment garnicht so richtig als Problem vorstellen. Wie groß ist denn die Zeitspanne?

    Als einzige "Lösung" fällt mir im Moment nur ein, einen JavaScript-Workaround zu basteln. Du könntest zum Beispiel die "Visibility" der beiden Buttons erst mit dem Event-Handler "OnLoad()" auf "visible" schalten. Du musst natürlich darauf achten, dass die Buttons bei ausgeschaltetem JavaScript immer sichtbar sind.

    Viele Grüße
    Thorsten

    1. Die Verzögerung ist nur so 2 Sekunden, wie gesagt, ist kein weltbewegendes Problem, ne Lösung wär trotzdem toll, das mit JS könnt hinhaun...

      Grüße
      Christoph

      1. Hi nochmal,

        Die Verzögerung ist nur so 2 Sekunden...

        ... was eigentlich sehr lang ist ;)

        Da ist mir eingefallen, daß ich ein sehr ähnliches Problem auch mal hatte (eben genau bei Formularen verzögerte der Seitenaufbau bzw hakte).

        Wenn du Zugriff auf den Server hast, dann probiere mal emacs oder vi:
        etc/apache2/apache2.conf (debian)
        und setze
        KeepAlive Off

        dann neu starten und sehen obs was bringt.
        /etc/init.d/apache2 restart

        herzliche Grüße nochmal, Jonny 5

  2. Hi!

    ob_get_contents,...) zu erreichen. Ich habe auch versucht, zuerst die (gebufferte) Tabelle und dann danach die (gebufferten) Buttons mit echo auszugeben...

    hast du es schon so probiert? :

    ob_start();
    ob_implicit_flush(0);

    content

    $page = ob_get_contents();
    ob_end_clean();
    echo $page;

    Da sollte eigentlich schon alles gleichzeitig rausgeschickt werden.

    herzliche Grüße, Jonny 5

    1. Ne, das hilft leider auch nix.

      Vermutlich kriegt der Browser schon alles zum richtigen Zeitpunkt, nur dass er den Code nicht seriell abarbeitet sondern zuerst darstellt, was am leichtesten/schnellsten darstellbar ist.

      unwissende Grüße
      Christoph

  3. echo $begrüßung;

    Das Problem, bzw. eher Problemchen, ist nun, dass die Buttons bereits dargestellt werden, bevor die Tabelle angezeigt wird, was sehr unschön aussieht. Die Seite wird mit PHP programmiert, [...]

    Du hast ein Darstellungsproblem, also such den Fehler in dem, war der Client erhält: HTML und CSS. Ich vermute, dass du die Buttons auf unzulässige Weise in deinem Dokument eingebunden hast, vielleich so:

    <table>
      <tr>
        <td>Tabellenzelleninhalt</td>
      </tr>

    <input type="submit">

    </table>

    Der Submit-Button erscheint dann außerhalb der Tabelle, weil er nicht richtig in sie integriert ist.

    echo "$verabschiedung $name";

    1. hallo $name,

      das stimmt so zwar nicht, weil ich die buttons bisher nicht in der tabelle mit drin haben wollte, is aber ne gute idee, die einfach mit rein zu nehmen, so wird klappen.

      danke
      C.

  4. Lieber Christoph,

    dargestellt als Tabelle

    genau hier liegt der Hase im Pfeffer. Solange der Browser die Tabelle nicht fertig berechnet hat, kann es sein, dass er sie nicht anzeigt. Dass Deine Formular-Buttons aber schon dargestellt werden, liegt entweder daran, dass sie nicht Bestandteil der Tabelle sind (worunter auch die Anmerkung des fehlerhaften Codes fällt), oder dass der Browser die Buttons aufgrund ihres Sonderstatus (ich glaube sie gehören zu den Elementen mit "replaced content") zuerst rendert.

    In jedem Falle empfehle ich Dir, im Markup keine Tabelle zu benutzen, sondern die Darstellung der Eingabefelder ausschließlich mittels CSS zu steuern. Damit sollte dann die Darstellungsverzögerung zumindest verbessert sein.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)