Archiv verlassen und diese Seite im Standarddesign anzeigen : Forward-Screen
MilhouseNo1
04-02-2003, 21:01
Hi @all
ich hab da mal ne Frage
auf einer Intranetseite soll eine Kreuztabelle via PHP und MYSQL generiert werden,
dazu sind ca 200 DBQueries notwendig.
Wie kann ich es realisieren, dass der User während der Rechenzeit des Servers eine Meldung 'please be patient', oder 'Anfrage wird bearbeitet' zu sehen bekommt?
(PS: das ganze sollte so ähnlich funktionieren wie die Suche hier im Forum,
das ist genau das, was ich mir vorstelle)
Hätte jemand einen Lösungsansatz für mich?
Hi
Ich bin mir zwar nicht sicher, aber versuchs mal damit:
http://www.php.net/manual/de/ref.outcontrol.php
MilhouseNo1
05-02-2003, 09:48
folgendes Beispiel:
ob_start();
echo "bitte warten\n";
//Server arbeitet unentwegt;
// hier berechnete Daten ausgeben ...
echo "dies oder jenes";
ob_end_flush();
schätze mal der Text 'bitte warten' würde zusammen mit 'dies oder jenes' gleichzeitig erscheinen, oder liege ich falsch?
CU
mehlvogel
05-02-2003, 10:12
Weis net ob man die OB FUntkionen dazu braucht :
echo "Bitte warten...";
flush();
// Server arbeitet arbeitet arbeitet
echo "Hier die Daten.... ";
(Dran denken das der IE nen Puffer von kA wieviel Bytes hat, bevor er ausgibt.)
MilhouseNo1
05-02-2003, 12:41
hatte diesen Ansatz:
// Ladezeit überbrücken
echo "<div id=patient style=display><img src=\"/images/bittewarten.gif\" alt=\"Ergebnis wird geladen ...\" border=0></div>\n";
echo "<div id=results style=display:none>\n";
flush();
// alles andere wird erst angezeigt, wenn komplett geladen ...
// hier die Ergebnisse ....
echo "bla, bla, bla\n";
echo "</div>\n";
// ein DIV Tag ausschalten, anderen einschalten ...
echo "<script language=\"JavaScript\" type=\"text/JavaScript\">\n";
echo " document.all.patient.style.display = \"none\";\n";
echo " document.all.results.style.display = \"\"\n";
echo "</script>\n";
Leider bleibt die Formularseite stehen, und die Ergebnisseite wird nach 10 sec komplett aufgebaut (ohne das 'bittewarten.gif')
(PS ich weiss, wird eventuell nur im IE funzen, ist aber an der Stelle kein Problem)
mehlvogel
05-02-2003, 14:34
Du musst bedenken das der IE (der im Intranet wohl verwendet werden soll) nen Buffer hat - der erst gefüllt wird, und wenn dieser Voll ist, erst ausgegeben (da hilft kein FLush befehl) ;)
PHP Usernote von der Flush Manual Seite
I've had problems where IE would buffer the output on it's own before showing it on the screen.
What I did is to print 300 spaces before the flush. This seems to have filled the IE buffer and output it to the screen.
also einfach:
echo str_repeat(300, " ") . "\n";
Im Script laufen lassen und der Rest sollte dann gehen
MilhouseNo1
05-02-2003, 20:07
für alle die's interessiert, ich hab das Pferd von hinten aufgezäumt:
die Geschichte DHTML display:none funktioniert ganz hervorragend auf der 'ersten' Formularseite, einfach einen Bereich zur Laufzeit erstellen der unsichtbar bleibt:
<span id=patient style=display:none>
<p>... die angeforderten Daten werden ermittelt,
bitte haben Sie einen Augenblick Geduld ...</p>
</span>
Formulardaten in einen anderen SPAN-Tag:
<span id=sel>
.
. irgendwas
.
.
</span>
und das onSubmit-Event des Forms
<form name="selection"
action="irgendein.php"
method="POST"
onSubmit="bitteWarten()">
mit einen entsprechenden Java-Script kombinieren:
function bitteWarten(){
document.all.sel.style.display="none";
document.all.patient.style.display="";
}
thats all ;-)
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.