"Bitte warten"-Seite wärend PHP arbeitet. Wie?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "Bitte warten"-Seite wärend PHP arbeitet. Wie?

    Hallo!

    Ich poste mehrere Formularfelder an eine PHP-Seite, die ziemlich viele Funktionen mit den empfangene Daten ausführt, darunter auch mehrmals "mail"-Funktion. Ich habe bemerkt, dass es einige Sekunden dauert, bis die Code ausgeführt ist und die Bestätigungsseite erscheint. Ich habe mir gedacht eine "Bitte warten Sie" - Seite zu erstellen, die angezeigt wird, während PHP arbeitet. Wie mache ich das am besten?

    Danke!

  • #2
    Da gibt es verschiedene Möglichkeiten.

    1. AJAX
    2. onload-Weiterleitung, das </body> aber erst nach der Verarbeitung ausgeben
    3. meta-refresh bis die Verarbeitung signalisiert, dass sie fertig ist

    Kommentar


    • #3
      Ich bin kein erfahrener PHP-Programmierer, deswegen brauche ich etwas mehr Zeit, um von onemorenerd beschriebene Techniken zu verstehen. Ich bitte um Verständnis.

      Über AJAX habe ich bereits gelesen und sogar mit einem Beispiel probiert, in dem ich mit JavaScript eine Ajax.Request erstelle. Leider bekomme ich ständig den Scriptfehler von meinem Browser "Ajax ist undefiniert". Ich vermute, dass evenuell auch andere Benutzer dieses Fehler haben werden. Also am liebsten kein AJAX.

      Die anderen zwei Methoden kliingen interessant.

      Ich habe also einen Formular, der die Daten an eine PHP-Seite sendet. Diese PHP-Seite besteht nur aus PHP-Code. Nachdem alle Funktionen ausgeführt sind, wird man zur "Bestätigung"-Seite weitergeleitet. Da ist noch eine andere HTML-Seite, die angezeigt werden soll, bevor PHP anfängt zu arbeiten, und wechselt zu dieser "Bestätigung"-Seite, wenn PHP fertig ist. Ich werde sehr dankbar, wenn mir jemand in Menschensprache eklären würde, was da zu machen ist. Danke!
      Zuletzt geändert von brazzi; 28.10.2007, 13:24.

      Kommentar


      • #4
        Nummer 2 von oben:
        PHP-Code:
        <?php
        // wenn das Formular nicht korrekt ausgefüllt wurde ...
        if (!allFormValuesOK()) {
            
        // Fehlermeldung oder sonstwas
        } else {
        ?>
        <html>
        <head><title>Bitte Warten</title></head>
        <body onload="location.href='done.php';">
        <p>Bitte warten ...</p>
        <?php
        // Hier verarbeitest du die Formulardaten,
        // schickst deine Mails usw.
        ?>
        <p>Sollten Sie nicht weitergeleitet werden, klicken Sie bitte
        <a href="done.php">hier</a>.</p>
        </body>
        </html>
        <?php
        }
        ?>
        Nummer 3 ist etwas komplizierter. Da werden die Daten an ein Script geschickt und validiert. Wenn alles okay ist, legt das Script ein Semaphor an, gibt eine HTML-Seite aus, die sich meta-refresht und beginnt dann mit der Verarbeitung der Formulardaten.
        Wenn der Refresh einen erneuten Request auf das selbe Script auslöst, schaut dieses nach dem Semaphor: Ist es noch da, läuft die Datenverarbeitung noch, es wird nochmal die Refresh-Seite ausgeben. Ist es weg, eine Erfolgsmeldung ausgeben.

        Kommentar


        • #5
          ProgressClass

          Kommentar


          • #6
            Vielen Dank onemorenerd!

            Mit der Nummer 2 hat es geklappt!

            Nur ein Problem noch: auf der "Bitte warten"-Seite habe ich ein animiertes GIF, so eine Art ProgressBar oder wie auch immer das heisst. Leider wird es statisch dargestellt, nicht animiert. Woran könnte das liegen?

            Kommentar


            • #7
              Such!

              Kommentar


              • #8
                Die Animation wird auch erst gestartet, wenn das Dokument komplett ist. Animierte GIFs sind eh doof.

                Kommentar

                Lädt...
                X