Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/12/2010, 08:58
lmerli
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 17 años, 11 meses
Puntos: 2
Respuesta: barra de % completado de x operación

bueno, despues de unos cuantos quebradeos de cabeza, he encontrado esto.
Código Javascript:
Ver original
  1. <script language="javascript">
  2. //Creo una función que imprimira en la hoja el valor del porcentanje asi como el relleno de la barra de progreso
  3. function callprogress(vValor){
  4.  document.getElementById("getprogress").innerHTML = vValor;
  5.  document.getElementById("getProgressBarFill").innerHTML = '<div class="ProgressBarFill" style="width: '+vValor+'%;"></div>';
  6. }
  7. </script>
Código CSS:
Ver original
  1. <style type="text/css">
  2. /* Ahora creo el estilo que hara que aparesca el porcentanje y relleno del mismoo*/
  3.       .ProgressBar     { width: 16em; border: 1px solid black; background: #eef; height: 1.25em; display: block; }
  4.       .ProgressBarText { position: absolute; font-size: 1em; width: 16em; text-align: center; font-weight: normal; }
  5.       .ProgressBarFill { height: 100%; background: #aae; display: block; overflow: visible; }
  6.     </style>
Código HTML:
Ver original
  1. </head>
  2. <!-- Ahora creo la barra de progreso con etiquetas DIV -->
  3.  <div class="ProgressBar">
  4.       <div class="ProgressBarText"><span id="getprogress"></span>&nbsp;% completado</div>
  5.       <div id="getProgressBarFill"></div>
  6.     </div>
Código PHP:
Ver original
  1. <?php
  2.  /*Ahora procedo a crear la situación de importacion de registros, para este caso utilizaré el bucle FOR, también puede funcionar con WHILE. Recuerden sólo en este caso estaré utilizando for ya que es a modo de ejemplo y no estoy trabajando con base de datos*/
  3. $ValorTotal=25; //Valor total de registros
  4.  
  5. for($i=1;$i<=$ValorTotal;$i++){ //le digo que si es igual al total detengo el bucle
  6.  sleep(1); //descanso 1 minuto para mostrar de forma pausada el proceso
  7.  $porcentaje = $i * 100 / $ValorTotal; //saco mi valor en porcentaje
  8.  echo "<script>callprogress(".round($porcentaje).")</script>"; //llamo a la función JS(JavaScript) para actualizar el progreso
  9.  flush(); //con esta funcion hago que se muestre el resultado de inmediato y no espere a terminar todo el bucle con los 25 registros para recien mostrar el resultado
  10. }
  11. ?>

Código TODOJUNTO:
Ver original
  1. <html><head>
  2. <script language="javascript">
  3. //Creo una función que imprimira en la hoja el valor del porcentanje asi como el relleno de la barra de progreso
  4. function callprogress(vValor){
  5.  document.getElementById("getprogress").innerHTML = vValor;
  6.  document.getElementById("getProgressBarFill").innerHTML = '<div class="ProgressBarFill" style="width: '+vValor+'%;"></div>';
  7. }
  8. </script>
  9. <style type="text/css">
  10. /* Ahora creo el estilo que hara que aparesca el porcentanje y relleno del mismoo*/
  11.       .ProgressBar     { width: 16em; border: 1px solid black; background: #eef; height: 1.25em; display: block; }
  12.       .ProgressBarText { position: absolute; font-size: 1em; width: 16em; text-align: center; font-weight: normal; }
  13.       .ProgressBarFill { height: 100%; background: #aae; display: block; overflow: visible; }
  14.     </style>
  15. </head>
  16. <body>
  17. <!-- Ahora creo la barra de progreso con etiquetas DIV -->
  18.  <div class="ProgressBar">
  19.       <div class="ProgressBarText"><span id="getprogress"></span>&nbsp;% completado</div>
  20.       <div id="getProgressBarFill"></div>
  21.     </div>
  22.  
  23. <?php
  24.  /*Ahora procedo a crear la situación de importacion de registros, para este caso utilizaré el bucle FOR, también puede funcionar con WHILE. Recuerden sólo en este caso estaré utilizando for ya que es a modo de ejemplo y no estoy trabajando con base de datos*/
  25. $ValorTotal=25; //Valor total de registros
  26.  
  27. for($i=1;$i<=$ValorTotal;$i++){ //le digo que si es igual al total detengo el bucle
  28.  sleep(1); //descanso 1 minuto para mostrar de forma pausada el proceso
  29.  $porcentaje = $i * 100 / $ValorTotal; //saco mi valor en porcentaje
  30.  echo "<script>callprogress(".round($porcentaje).")</script>"; //llamo a la función JS(JavaScript) para actualizar el progreso
  31.  flush(); //con esta funcion hago que se muestre el resultado de inmediato y no espere a terminar todo el bucle con los 25 registros para recien mostrar el resultado
  32.  ob_flush();
  33. }
  34. ?>

De esta manera, a cada vuelta del bucle mando la info con flush() y hago su porcentaje.

¿Alguien me puede orientar o sabe como podria hacer ahora que vaya informando del proceso por el que voy? es decir, proceso X de Totales.

Gracias, Un saludo!