Thomas: Wie realisiert man eine "Bitte warten"-Anzeige?

Hallo zusammen,

ich programmiere gerade eine recht umfangreiche Datenbankanwendung mit PHP3 und MySQL. Früher oder später könnte es sein, dass die Datenabfrage ein wenig dauern könnte. Dazu möchte ich während der Verarbeitung eine HTML- oder PHP-Datei anzeigen lassen. Einge Versuche sind bis jetzt fehlgeschlagen. Beispiel:

1.
<?
header("Location: bittewarten.datei");

// Verarbeitung ...

header("Location: fertig.datei");
?>

2.
<?
// Teilverarbeitung
?>
<html>
...
</html>
<?
// Verarbeitung ...

header("Location: fertig.datei");
?>

Ist es möglich eine sichtbare HTML-Ausgabe am Anfang einer PHP-Datei zu generieren, den Verarbeitungsprozess anzuschliessen und dann per header() auf die Bestätigung zu verweisen?

Ich möchte eigentlich nicht die Parameter erst durch eine Anzeige-Datei zu schleusen und dann an die Verarbeitungs-Datei weiter zu geben.

Für eine Lösung wäre ich sehr dankbar.

Gruss Thomas

  1. Hallo !

    Hmmmmm... würd ich so machen !

    Ich würde das mit Frames realisieren. Einen sichtbaren Frame und einen unsichtbaren.

    In den sichtbaren Frame schreibts du "Bitte warten " !

    Im unsichtbaren Frame die Seite, die durch deine Datenbank generiert wird. ( was aber etwas dauern kann ).

    Jetzt reagierst du auf den unsichtbaren Frame(Datenbank) mit einem onload() event.

    Das heißt, erst wenn deine durch die Datenbank generierte Seite vollständig geladen wurde, wird das onload() Event ausgelöst.

    Und darauf reagierst du mit einem Location wechsel auf die Datenbank Seite, so das sie jetzt sichtbar angezeigt wird.

    Also!.... so bekommt der User erst dein "Bitte warten" und dann, nach dem warten bekommt er die Datenbankseite angezeigt.

    Gut ne!

    Aber denk dran das auch Fehler auftauchen können. Zum Beispiel das deine Datenbank Seite nicht vollständig geladen wird. Dann wartet der User bis nen Bier warm wird. (und das is nich gut). Also ne max. Wartezeit kalkulieren und mit nem setTimeout() trozdem schon deine D-Seite anzeigen lassen.

    Kloar !

    Tsusss
    code21

    1. Hallo !
      Hmmmmm... würd ich so machen !
      Ich würde das mit Frames realisieren. Einen sichtbaren Frame und einen unsichtbaren.

      Hi,

      viel zu aufwendig und zu kompliziert, wenn es überhaupt funktioniert!
      Schaut Euch zu dem Thema im PHP-Manual mal die function flush() an!
      Diese funktion sendet jede Ausgabe sofort an den Browser, auch wenn die Seite noch nicht fertig geladen wurde, oder das Script noch nicht fertig ist.
      Irgendwann, vor längerer Zeit habe ich damit mal eine Statusanzeige gebastelt, welche von 0% bis 100% angezeigt hat, während eines längeren Verarbeitungsprozesses.

      Leider habe ich diese Anzeige nicht mehr, aber ich muss sowieso demnächst eine basteln, welche ungefähr das Göeiche macht... *g*

      --
      mfg Alexander Mieland
      APP - Another PHP Programs
      http://www.phpzentrale.de
      mailto:dma147@web.de

  2. Danke Alexander!!!

    Das war genau der Tip, den ich brauchte. Hätte ich zwar auch selbst drauf kommen können, aber ich bin immer zu faul ein komplettes Tutorial durchzulesen :-(. Jedenfalls klappt es nun.

    Gruss Thomas