2010-06-30 3 views
0

У меня есть один вид, как показано ниже:PHP Прогресс бар

Страница 1:

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

page2.php:

<?php 

For loop ... 
..... 
end 

?> 

Теперь я хочу, чтобы иметь прогресс бар на странице 1, так что он может показать завершение выполнения цикла for в page2.php.

Скажите, как я могу это сделать? Пожалуйста, не направлять меня к какой-либо прогресс-бар я уже использую прогресс, но я не знаю, как реализовать код в него,

Ниже приведен код, который я сейчас использую

<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> 

Он отлично работает, когда я нажимаю на приведенные выше ссылки. Но как я могу показать его на стр. 1, чтобы показать ход цикла for на стр.22.php?

Пожалуйста, помогите мне.

ответ

1

page2.php:

<?php 

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

?> 

И затем использовать AJAX для опроса сервера, получить текущее значение $_SESSION['myFormProgress'] и обновить ваш прогресс бар соответственно.

Как указывает Jonah Bron, вам также необходимо отправить форму на номер Page2.php с помощью AJAX. В противном случае вы не сможете продолжить запуск JavaScript на странице (чтобы обновить индикатор выполнения). Когда цикл for закончен (и индикатор выполнения заполнен), я подозреваю, что вы захотите перенаправить пользователя на новую страницу, где результаты будут видны.

+0

Какую ценность он будет посылать обратно в HTML-форме или функции JavaScript? – fawad

+0

Поскольку вы хотите заполнить индикатор выполнения, достаточно будет процента. 'echo $ _SESSION ['myFormProgress']; //например. возвращает 0,27 для 27% ' – Dolph

+0

Итак, в целом вы подразумеваете, что мне нужно будет использовать AJAX для связи между страницами 1 и страницей 2. Page 2 отправит статус на страницу 1 на каждой итерации цикла for. Это правильно? – fawad

1

Если я правильно понял ваш вопрос, вам нужно будет использовать Ajax для отправки формы. Я не использую jQuery, поэтому я не знаю, как реализовать панель progress с XMLHttpRequest.

+0

Спасибо за ответ, но это не решает мою проблему – fawad

0

Это довольно сложно сделать с помощью регулярного Ajax, вам нужно немного модифицировать сервер, поскольку PHP его не поддерживает.

Theres - это расширение, которое может вас заинтересовать, что позволяет php делать это.

Модуль Page: http://pecl.php.net/package/uploadprogress/1.0.1

Примеры: http://svn.php.net/viewvc/pecl/uploadprogress/trunk/examples/

+0

OP is * not * запрашивает прохождение загрузки файла. OP * * запрашивает прогресс в длительном запросе. – Dolph

Смежные вопросы