2010-06-30 11 views
0

J'ai une forme comme indiqué ci-dessous:PHP Barre de progression

Page 1:

<form name = "form1" method="post" action = "page2.php"> 
........ 
</form> 

page2.php:

<?php 

For loop ... 
..... 
end 

?> 

Maintenant, je veux avoir la barre de progression à la page 1 afin qu'il peut montrer la progression d'achèvement de la boucle for page2.php.

Dites-moi comment puis-je faire cela? S'il vous plaît ne pas me diriger vers une barre de progression, je suis déjà en utilisant les progrès, mais je ne sais pas comment mettre en œuvre le code en lui,

Voici le code que je suis actuellement en utilisant

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jquery.progressbar.min.js"></script> 

$(document).ready(function() { 
$("#spaceused1").progressBar(); 
}); 
HTML: 

<span class="progressBar" id="spaceused1">25%</span> 

<a href="#" onclick="$('#spaceused1').progressBar(20);">20</a> 
<a href="#" onclick="$('#spaceused1').progressBar(40);">40</a> 
<a href="#" onclick="$('#spaceused1').progressBar(80);">80</a> 

Cela fonctionne très bien lorsque je clique sur les liens ci-dessus. Mais comment puis-je le montrer sur la page1 pour montrer la progression de la boucle for page2.php?

S'il vous plaît aidez-moi.

Répondre

1

page2.php:

<?php 

for(;;) { 
    //In each loop iteration, update your progress and store it in the session 
    $_SESSION['myFormProgress'] = myProgressCalculation(); 
} 

?> 

Et puis utilisez AJAX pour interroger le serveur, recevoir la valeur actuelle de $_SESSION['myFormProgress'], et mettre à jour votre barre de progression en conséquence. Comme Jonah Bron le souligne, vous devrez également soumettre votre formulaire à Page2.php en utilisant AJAX. Sinon, vous ne pourrez pas continuer à exécuter JavaScript sur la page (pour mettre à jour la barre de progression). Lorsque la boucle for est terminée (et la barre de progression est pleine), je suppose que vous voudrez rediriger l'utilisateur vers une nouvelle page où les résultats peuvent être vus.

+0

Quelle valeur il renvoie à la forme HTML ou javascript fonction? – fawad

+0

Puisque vous voulez remplir la barre de progression, un pourcentage suffira. 'echo $ _SESSION ['myFormProgress']; //par exemple. renvoie 0,27 pour 27% ' – Dolph

+0

Donc, globalement, vous voulez dire que je vais devoir utiliser AJAX pour communiquer entre la page 1 et la page 2. La page 2 enverra le statut à la page 1 à chaque itération de la boucle for. Est-ce correct? – fawad

1

Si je comprends bien votre question, vous devrez utiliser Ajax pour soumettre le formulaire. Je n'utilise pas jQuery, donc je ne sais pas comment implémenter la barre de progression avec un XMLHttpRequest.

+0

Merci pour la réponse, mais cela ne résout pas mon problème – fawad

0

cela est assez difficile à faire via Ajax régulière, vous devez modifier le serveur légèrement comme PHP ne le supporte pas.

Theres est une extension qui vous intéresse peut-être qui permet à php de le faire.

Module Page: http://pecl.php.net/package/uploadprogress/1.0.1

Exemples: http://svn.php.net/viewvc/pecl/uploadprogress/trunk/examples/

+0

L'OP ne demande pas la progression du téléchargement du fichier. L'OP * demande * la progression d'une demande de longue durée. – Dolph