我有一个脚本可以从csv文件导入电话号码。
验证后,我用这个脚本将所有结果放在php数组$data_rec[]
上:
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$data_rec[]=''.$data[0].'';
}
我想在之后,将所有结果推送到我的mysql dbb上并插入并指示使用进度条完成的pourcentage。我在互联网上搜索了几个小时,但我找不到快速简便的解决方案。
我要插入mysql dbb的脚本:
foreach($data_rec as $id => $number)
{
$req=("INSERT INTO contact VALUES('".$idclient."','', '".$numero."','','','','','','','0')");
$doins = mysql_query($req) or die(mysql_error());
}
我找到了jqueryprogressbar,但我无法理解如何使用我的脚本安装。 你有好主意吗 ? 非常感谢你
感谢您的帮助。 我恳求你的链接找到(我认为)解决问题的方法。 但它仍然无效。 我看到进度条,但是当所有结果都插入时(最后)。一个想法来帮助我?
在我的页面test.php上我有一个ajax脚本。
<script type='text/javascript'>
$(document).ready(function() {
$("#import_2").click(function (event) {
$("#import_2").attr('class', 'vert');
$('div#display_import').empty(); // we empty the div to display the result (in case of old result)
$.ajax({
type: "POST",
url: "testtest.php",
data: "fonction=importok",
success: function(msg){
$('div#display_import').fadeIn(); // Fade in on the result div
$("div#display_import").append(msg); // display the result of the div
}
});
});
});
</script>
div上的按钮开始导入:
<div style="margin:10px 10px 10px 10px;width: 150px; height: 20px;">
<label id="import_2" style="width: 150px; height: 20px;padding-left: 10px; cursor: pointer;" class="">
<span style="vertical-align: 0px; margin-right: 10px;"><img id="img_tous" src="images/icone-bouton-gris.png" width="10" height="10" style="margin-right: 5px;" /> <strong>IMPORT</strong></span>
</label>
</div>
<div id="display_import" class="texte_13">
</div>
在testtest.php上我有我的php脚本在mysql dbb上导入 $ _SESSION ['listeok']计算一个包含我所有结果的数组(大约12 000“数字”)
if(isset($_POST['fonction']) and $_POST['fonction']=="importok")
{
// display progress bar
echo '<div id="progress" style="width:500px;border:1px solid #ccc;"></div>';
echo '<div id="information" style="width"></div>';
// Total processes
$data=$_SESSION['listeok'];
$total=10;
// Loop through process
for($i=1; $i<=$total; $i++)
{
// Calculate the percentation
$percent = intval($i/$total * 100)."%";
// Javascript for updating the progress bar and information
echo '<script language="javascript">
document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\"> </div>";
document.getElementById("information").innerHTML="'.$i.' row(s) processed.";
</script>';
$req=("INSERT INTO contact VALUES('".$i."','', '".$data[$i]."','','','','','','','0')");
$doins = mysql_query($req) or die(mysql_error());
// This is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
// Send output to browser immediately
flush();
// Sleep one second so we can see the delay
sleep(1);
}
// Tell user that the process is completed
echo '<script language="javascript">document.getElementById("information").innerHTML="Process completed" </script>';
}
答案 0 :(得分:0)
你好,这是一般的想法......
在循环中,每100步将进度写入一个临时文件。
$i = 0;
foreach($data_rec as $id => $number)
{
$req=("INSERT INTO contact
VALUES('".$idclient."','', '".$numero."','','','','','','','0')");
$doins = mysql_query($req) or die(mysql_error());
if($i++ % 100 == 0){
file_put_contents("anytempfile","$i of ".count($data_red));
}
}
在html端,你只需每隔0.5秒通过ajax调用该文件的内容并显示它。现在,您可以毫不费力地观察您的进度。
为什么要提交文件?因为一个简单的静态文件会导致非常低的开销(你不需要初始化任何与脚本相关的会话或事件)