Faking it with Javascript doesn't really work because the termination of the
Javascript isn't tied to the completion of the processing. Here's how we're doing it
for a new anti-spam product:
results.html
<?php
if ($display):
// display results
else:
// save form info
header("Location: wait.php");
endif;
?>
When the user is sent to results.html (the first time) it save the info and sends them
to wait.php
wait.php
<?php
if ($view):
echo "<center><P CLASS=title>Checking</P>
<BR><embed width=125 height=25 src='images/progress_bar.swf'></center>";
else:
echo "<html>
<FRAMESET rows='0,*' FRAMEBORDER=NO noresize>
<frame name=control src='processor.php' FRAMEBORDER=NO noresize>
<frame name=view src='$PHP_SELF?view=T'>
</frameset>
</html>";
endif;
?>
wait.php spawns 2 windows: One, which is invisible, runs your processing script and
the other, a normal window, shows your animated �processing� gif.
processor.php
<?php
// do all the processing
echo "<html><body
onLoad=\"top.location='results.html?any_info_to_pass_to_display_page';\"></body></html>";
?>
processor.php does the actual work in its invisible window. When it�s finished, it
loads the results page on top of the window which was displaying the �processing�
info.
If the results page needs only a little bit of info from the processing, and you don�t
mind showing it, you can pass it via the URL. Or, you can store the info in a database
table and have the results page access it from there.
Hope this helps,
Jeff
---------------------------------
Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day