PHP Flush无法与HTML表格一起使用

时间:2013-06-10 15:46:29

标签: php internet-explorer html-table flush

我遇到问题flush()和使用“Internet Explorer”的HTML表格。 我编辑了以下代码,在flush()的表格中显示“实时”回显,我在flush()标记之后调用了</table>,因为在“Internet Explorer”中它没有工作,但我不知道为什么只有我的周期的第一个回声进入表,其他人走出去。有帮助吗?

<html lang="en">
<head>
</head>
<table border='1'>
<tr>
<td>

<?php

 $total = 10;

 for($i=1; $i<=$total; $i++){

 echo "sometext";

 //other stuff

    ?>

</td>
</tr>
</table>
<?php
echo str_repeat(' ',1024*64);

flush();
    sleep(1);

}

?>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

你正在循环中关闭你的桌子。

<html lang="en">
<head>
</head>
<body>
<table border='1'>
<tr>
<td>

<?php

 $total = 10;

 for($i=1; $i<=$total; $i++){

 echo "sometext";

 //other stuff

  echo str_repeat(' ',1024*64);

  flush();
  sleep(1);
}

?>
</td>
</tr>
</table>

</body>
</html>

证明:enter image description here

答案 1 :(得分:0)

简单地说,你已经关闭了循环中的表而不是循环之外的表。因此,在第一次迭代后,您的表标记不匹配。将</table>移到闭合循环大括号}之外。

关于Internet Explorer问题。您可能需要查看此内容:http://php.net/manual/en/function.flush.php

它讨论了某些版本的Internet Explorer在开始刷新数据之前需要一定量的字节。您可能还想尝试在ob_flush();声明上方调用flush();

答案 2 :(得分:0)

浏览器可能正在等待关闭,因为它不知道所有单元格的内容,因此也不知道列的宽度。尝试使用td元素的固定值来提示它,例如:

<td style="width: 200px">