He realizado un script para poder mostrar una barra de porcentaje de registros procesados para que no se quede la pantalla en blanco mientras se ejecuta el codigo PHP y os la pongo para quien pueda interesarle:
Código PHP:
<?
// inicializar la barra
//
// $registros = nº de registros a procesar
// $texto = texto a mostrar (p.e. nombre del campo a mostrar)
// imagen/trans.gif es un gif transparente, aunque no es necesario.
//
function inicializa_barra($registros,$texto) {
?>
<TABLE width='400'>
<TR>
<TD width='30' align="left" style='font-size:14px;'><? echo $texto;?></TD>
<TD width='370' align="left" style='font-size:14px;'><B><div id='texto' style='position:relative;color: #c21602;'></div></B></TD>
</TR>
<TR>
<TD colspan=2 align="center"><br><br>
<TABLE cellspacing="1" cellpadding="1" width='302' bgcolor="#c21602">
<TR>
<TD bgcolor="#ffffff" align="left" style='font-size:14px;' VALIGN="middle"><div id='progreso' style='position:relative;overflow:hidden'><div id='porcentaje' style='position:absolute;left:130;'>0 %</div><IMG SRC="imagen/trans.gif" WIDTH="1" HEIGHT="15" BORDER=0 ALT=""></div></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<?
return round($registros/100);
}
// procesamiento de la barra
//
// $porcentaje: porcentaje a mostrar
// $pixeles: tamaño de la barra
// $texto: campo a mostrar o texto (p.e. nombre del registro procesado)
// imagen/separacion.gif es el gif de la barra (un gif de 1 x 1 con el color desedao)
//
function procesa_barra($porcentaje,$pixeles,$texto) {
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.getElementById('texto').innerHTML="<? echo $texto;?>";
document.getElementById('progreso').innerHTML="<div id='porcentaje' style='position:absolute;left:130;'><B><? echo $porcentaje.' %';?></B></div><IMG SRC='imagen/separacion.gif' WIDTH='<? echo $pixeles;?>' HEIGHT='15' BORDER=0>";
//-->
</SCRIPT>
<?
}
// terminación de la barra
//
// (no necesario si el script que usa esto redirecciona a otra página)
// $texto: texto que se muestra (p.e. T E R M I N A D O)
//
function termina_barra($texto) {
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.getElementById('texto').innerHTML="<? echo $texto;?>";
//-->
</SCRIPT>
<?
}
?>
Y lo uso de la siguiente forma:
Código PHP:
<?
include "include/barra_porcentaje.php";
$sql= "SELECT * from clientes";
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
// o bien count($array)
$procesados=0;
$porcentaje=0;
$tope = inicializa_barra($numeroRegistros,"");
$cont=0;
while ($row=mysql_fetch_array($res)) {
if ($cont > $tope) {
$cont=0;
}
$procesados++;
$pixeles= round(($procesados*300)/$numeroRegistros);
$porcentaje= round(($procesados*100)/$numeroRegistros);
//
// aqui las operaciones que se deseen
//
if ($cont==0) {
procesa_barra($porcentaje,$pixeles,"Espere . . .");
flush();
ob_flush();
}
$cont ++;
}
termina_barra($texto);
?>
Saludos,
manuweb