Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2006, 04:04
Avatar de manuweb
manuweb
 
Fecha de Ingreso: julio-2002
Mensajes: 75
Antigüedad: 21 años, 10 meses
Puntos: 10
Barra de porcentaje

Hola a todos.

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>
    <?
}
?>
Todo esto lo guardo en un fichero php para poder usarlo con include.

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++;
        
$pixelesround(($procesados*300)/$numeroRegistros);
        
$porcentajeround(($procesados*100)/$numeroRegistros);

        
//
        // aqui las operaciones que se deseen
        //

        
if ($cont==0) {
            
procesa_barra($porcentaje,$pixeles,"Espere . . .");
            
flush();
            
ob_flush();
        }
        
$cont ++;
    }
    
termina_barra($texto);
?>
Me va muy bien, para restaurar archivos sql, procesar tablas con muchos registros, etc. y que la pantalla no quede vacia.

Saludos,

manuweb