A ver,
La barra la he colocado en un <TABLE> que se crea con la función inicializa_barra().
Ahí tengo tres <DIV>, el 1º es el que mostrará un texto o el registro procesado, el 2º es el marco de la barra que contiene el 3º que es la barra.
la segunda función, procesa barra(), utiliza javascript para cambiar el contenido de las etiquetas <DIV> que muestran la barra utilizando para ello document.getElementById('id').innerHTML que altera el HTML.
La tercera función, termina_barra(), simplemente sirve para indicar al que ve la página que se ha terminado.
dentro del php que recorrería una tabla o un fichero se llama a las funciones mencionadas:
Código PHP:
<?
// ejemplo para recorrer una tabla de clientes y actualizar un campo
include "include/barra_porcentaje.php";
$sql= "SELECT * from clientes";
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
// para el calculo de datos prcesados
$procesados=0;
$porcentaje=0;
// tope es para determinar cuando debo actualizar la barra
$tope = inicializa_barra($numeroRegistros,"Cliente:");
$cont=0;
$texto="T E R M I N A D O";
// recorro la tabla
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 en la tabla
//
// compruebo que hay que añadir una barrita
if ($cont==0) {
procesa_barra($porcentaje,$pixeles,$row['nombre']);
flush();
ob_flush();
}
$cont ++;
}
termina_barra($texto);
?>
No sé, quizas está farragoso pero os aseguro que queda bien.
Solo me queda algo para los envios de archivo de descarga, generar PDF, es decir, los que llevan HEADER y ya son algo más complicado. En esto estoy bloquedo.
Saludos