Foros del Web » Programando para Internet » PHP »

Bootstrap Progress Bar en consulta mysql

Estas en el tema de Bootstrap Progress Bar en consulta mysql en el foro de PHP en Foros del Web. Hola a todos. Tengo una consulta SELECT que selecciona una gran numero de registros y me gustaria implementar una barra de progreso con Bootstrap Progress ...
  #1 (permalink)  
Antiguo 18/05/2016, 09:57
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Bootstrap Progress Bar en consulta mysql

Hola a todos.

Tengo una consulta SELECT que selecciona una gran numero de registros y me gustaria implementar una barra de progreso con Bootstrap Progress Bar, mientras se realizan las tareas del while

Código PHP:
$result mssql_query($query);
while(
$row mssql_fetch_array($result)){
.... 
mostrar la barra de progreso 

Como no encuentro ningún tutorial, he probado a variar los valores de la barra .. pero no me funciona

Código PHP:
<div class="progress">
<
div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 50%"><span class="sr-only">0Completo</span>
</
div>
</
div
¿alguna ayuda?
  #2 (permalink)  
Antiguo 18/05/2016, 10:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Bootstrap Progress Bar en consulta mysql

Estás tratando de resolver cosas fuera de lugar: no puedes mostrar una barra de progreso en HTML mientras construyes el HTML, es decir, primero debe el navegador recibir el HTML para comenzar a mostrarlo pero PHP se ejecuta en el servidor así que sencillamente no se puede.

Primero PHP terminará su proceso y entonces después recibirás el HTML, lo cual no tiene sentido en el tiempo y espacio.

Tendrás que resolverlo usando Javascript, es lo único que se me ocurre.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/05/2016, 18:44
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Bootstrap Progress Bar en consulta mysql

Como ya te indicaron, debes engañar al sistema con javascript, ya que cuando tu html se ha cargado, el php lo ha hecho hace rato, podrias utilizar ajar y un par de funciones para simular la carga de los datos, pero en realidad estos ya estan cargados, solo que esperas a emitir la respuesta en la lista utilizando el sleep de php, por ejemplo:

el PHP de muestra:
Código PHP:
Ver original
  1. if($_GET['id']==1){
  2.  
  3. $ca = '';
  4.  
  5. for($i=0; $i<=10; $i++){
  6.  
  7.     $ca = $i;
  8.    
  9.  
  10. }
  11.  
  12. echo "Esta es la Respuesta de PHP";
  13. sleep(10);
  14. }

Nuestro HTMl de Muestra:

Código HTML:
Ver original
  1. <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
  2.     <button type="button" class="btn btn-primary" onClick="lista()">button</button>
  3. </div>
  4.  
  5. <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
  6.    
  7.     <div class="progress">
  8.         <div class="progress-bar progress-bar-striped" style="width: 0%">
  9.             <span class="etiqueta"></span>
  10.         </div>
  11.     </div>
  12.     <div id="respuesta"></div>
  13.  
  14. </div>

y nuestro script js:

Código Javascript:
Ver original
  1. var contador = 0;
  2.   var fin = 10;
  3.  
  4.     function lista(){
  5.  
  6.         var id = setInterval("cuenta()",1000);
  7.  
  8.         $.ajax({
  9.             url:     'directorio/controllers/muestra.php?id=1',
  10.             type:     'get',
  11.  
  12.             success: function(data){
  13.  
  14.                 clearInterval(id);
  15.                 $("#respuesta").html(data);
  16.                
  17.             }
  18.         })
  19.  
  20.     }
  21.    
  22.     function cuenta(){
  23.  
  24.         contador = contador + 10;
  25.         $(".progress-bar").css('width',contador+"%");
  26.         $(".etiqueta").html(contador+"% Completado");
  27.  
  28.     }

de esta manera simulamos que se estan cargando los datos consultados, cuando en realidad lo que estamos es igualando la espera de nuestro sleep php con el contador, que a su vez acrecenta la barra.

Saludos
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 18/05/2016, 18:49
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Bootstrap Progress Bar en consulta mysql

Tambien podrias canvia la suma del contador de 10 a 1 y bajar los milisegundos desetInterval a 100
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 19/05/2016, 01:57
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Bootstrap Progress Bar en consulta mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
Estás tratando de resolver cosas fuera de lugar: no puedes mostrar una barra de progreso en HTML mientras construyes el HTML, es decir, primero debe el navegador recibir el HTML para comenzar a mostrarlo pero PHP se ejecuta en el servidor así que sencillamente no se puede.

Primero PHP terminará su proceso y entonces después recibirás el HTML, lo cual no tiene sentido en el tiempo y espacio.

Tendrás que resolverlo usando Javascript, es lo único que se me ocurre.
No es del todo cierto...

Siempre está flush y ob_flush, que permiten volcar el resultado de php antes de que termine el script...

Pero si pienso que es mejor usando AJAX ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 19/05/2016, 03:58
 
Fecha de Ingreso: noviembre-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Bootstrap Progress Bar en consulta mysql

Muchas gracias a todos por vuestros comentarios y posibles soluciones.
Probaré lo que me habéis indicado y os diré el resultado.
Un saludo a todos.

Etiquetas: bootstrap, mssql, mysql, progreso, progressbar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:03.