2013-03-08 3 views
1

Я пытаюсь обновить индикатор выполнения с помощью итерации запроса mysql, и я не могу понять, как я могу обновить индикатор выполнения, и как я могу найти, какое количество строк i имеют уши, например:индикатор выполнения с запросом mysql с php

$query = 'SELECT tvshows.genres, tvshows.id_show FROM tvshows where tvshows.genres is not NULL'; 
$result = mysql_query($query); 

$num_rows = mysql_num_rows($result); 
echo $num_rows; 

это: echo $num_rows; это число строк я есть уши, а затем таким образом я итерацию результат:

while ($db_row = mysql_fetch_assoc($result)) 
{ 
    //Do seomthing with the row 

} 

, но как я могу знать, в каком ряду я забираю, чтобы обновить индикатор выполнения? и кто-нибудь знает хороший учебник или образец кода, чтобы сделать индикатор прогресса? я нашел это: http://w3shaman.com/article/php-progress-bar-script

, но этот пример требует этих:

for($i=1; $i<=$total; $i++){ 
// Calculate the percentation 
$percent = intval($i/$total * 100)."%"; 

и я не знаю, как сделать это с результатом запроса PHP, кто-нибудь может мне помочь?

+0

вам нужно будет сделать ajax-вызов сценария и вернуть данные клиенту для создания любого вида выходных данных. но при любом типе отображения прогресса это замедлит фактический процесс. запрос, вероятно, будет завершен в большинстве баз данных, прежде чем вам действительно понадобится какой-либо прогресс. EDIT: забыли, что вы можете очистить вывод в браузере, как описано в ссылке. – StrikeForceZero

+0

Вы не объяснили, для чего работает индикатор выполнения - индикатор выполнения показывает процент от общей суммы - какова ваша общая сумма? Что вы измеряете? – inorganik

+2

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. – Kermit

ответ

2

Как указано в комментариях, это должен быть очень медленный запрос, если вам нужно использовать индикатор выполнения.

Если да, то вы можете просто добавить простой счетчик для вашего цикла:

$i = 0; 
while ($db_row = mysql_fetch_assoc($result)) 
{ 
    $i++; 
    $percent = intval($i/$num_rows * 100)."%"; 

    //Do seomthing with the row 

} 

А потом делать, как указано в статье.

+0

поздно к игре, но что это означает, когда процент не печатает/эхом во время запроса? все проценты выходят в конце при загрузке запроса и страницы. – leoarce

+0

Я не уверен, как вы тестируете это, но это может быть связано с буферизацией вывода? https://stackoverflow.com/questions/8882383/how-to-disable-output-buffering-in-php –

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