$a = $db->query('SELECT x FROM db;');
while ($i = $a->fetchArray()) {
echo $i[x];
}
И как добавить кнопку выхода из цикла break; ?
$a = $db->query('SELECT x FROM db;');
while ($i = $a->fetchArray()) {
echo $i[x];
}
Цитата (d4a1 @ 19.05.2016 - 16:16) |
Добрый день, подскажите пожалуйста, как реализовать progress bar выполнения цикла$a = $db->query('SELECT x FROM db;'); И как добавить кнопку выхода из цикла break; ? |
Цитата (d4a1 @ 19.05.2016 - 14:16) |
Добрый день, подскажите пожалуйста, как реализовать progress bar выполнения цикла$a = $db->query('SELECT x FROM db;'); И как добавить кнопку выхода из цикла break; ? |
$total = 100;
$count = 0; // для прогресс бара
$a = $db->query('SELECT x FROM db;');
while ($i = $a->fetchArray()) {
echo $i[x]; // вместо echo долгая операция
$count = $count + 1; // увеличиваем на 1 прогресс бар
}
<div style="text-align: center; color: red; display: block; height: 120px; width: 500px; border: solid 1px black;position:absolute;left:0px;top:100px;">
<div id="load" style="text-align: center; color: white; display: block; height: 20px; width: 200px; background:blue; border: solid 1px black;">
<div id="bar" style="display: block; height: 20px; width: 0%; background:green;" >
<div id="persent" style="position: relative; float:left; width:200px;">0%</div></div>
</div>
</div>
// response - ответ от PHP -циферка процентов
if (response<100) {
document.getElementById("bar").style.width=response+"%"; //растягиваем полосу загрузки
document.getElementById("persent").innerHTML=response+"%"; // изменяем счетчик процентов, на полосе загрузки
}
else {
document.getElementById("bar").style.width="0%"; //растягиваем полосу загрузки
document.getElementById("persent").innerHTML="0%"; // изменяем счетчик процентов, на полосе загрузки
}
$percent=round(($progress/$count)*100);
//$progress - в вашем коде -$count
//$count- всего записей
Цитата (arbuzmaster @ 19.05.2016 - 22:05) |
затем на JavaScript пишешь функцию которая будет запускать твой PHP скрипт ajax-ом, и затем через setInterval опрашивать например куки и получать процент выполнения, т.е. циферку и по ней будешь рисовать progressbar. Кнопку в таком случае можно реализовать через те же куки, через ajax не получится, так как процесс уже запущен, и в цикле (php файл) прописать условие, что если значение например в куке такое-то, остановить цикл. |
$total = 100;
$count = 0; // для прогресс бара
$a = $db->query('SELECT x FROM db;');
while ($i = $a->fetchArray()) {
$count = $count + 1; // увеличиваем на 1 прогресс бар
$percent=round(($count/$total)*100);
$fp = fopen('counter.txt', 'w+t');
fwrite($fp, $percent);
fclose($fp);
}
$fp = fopen('counter.txt', 'w+t');
fwrite($fp, '0');
fclose($fp);
echo 'ok';
function start_select()
{
$.ajax( { type: "GET", url: "php/select_from_db.php", data:{'test':'test'} , beforeSend: function()
{
refresh_progressbar= setInterval(function ()
{
$.ajax( { type: "GET", url: "php/counter.txt", data:{'test':'test'} , success: function(response)
{
if (response<100)
{
document.getElementById("bar").style.width=response+"%"; //растягиваем полосу загрузки
document.getElementById("persent").innerHTML=response+"%"; // изменяем счетчик процентов, на полосе загрузки
}
else
{
document.getElementById("bar").style.width="0%"; //растягиваем полосу загрузки
document.getElementById("persent").innerHTML="0%"; // изменяем счетчик процентов, на полосе загрузки
}
});
}, 1000);
}, success: function(msg){if(msg=='ok'){console.log('процесс окончен');clearInterval(refresh_progressbar);}}
})
}
function chudo_knopka()
{
здесь можно попробовать сделать так,
пишем в куку значение для остановки цикла и отправляем ajax запрос хоть на тот
же самый counter.txt, кука попадает на сервер и скрипт по идее должен остановиться,
затем clearInterval(refresh_progressbar); если так не получится, то Х.З., кнопку никогда не делал! Хотя по сути юзеру совершенно насрать, остановился твой скрипт или нет, ведь он
все равно когда нибудь остановится. если у тебя конечно в БД не +100500 записей, а всего 100,то я думаю это не критично.
}