如何使用flush()或ob_flush()使表逐列而不是逐行打印

时间:2017-06-17 13:45:31

标签: php html html-table flush

我有一个表格,其结构与此类似

 <table style="width:100%">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Age</th>
  </tr>
  <tr>
    <td>Jill</td>
    <td>Smith</td> 
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td> 
    <td>94</td>
  </tr>
</table>

我希望能够使用PHP的flush函数在数据输出时按列打印列。所以在这个例子中我希望它打印First Name,Jill,Eve,然后是第二列;姓史密斯;杰克,依此类推。

我不想等到数据被加载(脚本需要一段时间,而且整个过程就是让它在运行时回显)并且我不想处理AJAX。

我唯一能想到的就是使用一堆go(我知道这是一个糟糕的实现)。有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先,您应该加快脚本或数据库查询的速度。这样就可以解决问题而不会出现任何问题。

如果您真的想使用flush输出列,可以选择生成JavaScript。浏览器可能会执行javascript并在表中插入列。 这种方法很复杂,我不推荐

示例:

<script src="...jquery..."></script>

<table id="mytable">
    <!-- data will come later -->
</table>

<script>
    addColumnToTable = function(table, column) {
       // You need to implement this to manipulate table "mytable"
    }
</script>

// Generate in php and flush:
<script>
   var column = { "header": "Firstname", "rows": ["Jill", "Eve"] }
   addColumnToTable($('#mytable'), column)
</script>

// Generate in php and flush:
<script>
   var column = { "header": "Lastname", "rows": ["Smith", "Jackson"] }
   addColumnToTable($('#mytable'), column)
</script>

// Generate in php and flush:
<script>
   var column = { "header": "Age", "rows": ["50", "94"] }
   addColumnToTable($('#mytable'), column)
</script>

答案 1 :(得分:0)

我想我想出了一个非常创新的解决方案。它确实使用了一行javascript,但它基本上只是PHP中的手动AJAX过程。

所以现在我有一个正在运行的文件,当它正在运行时,它在PHP页面运行时输出一个表。我所做的是将其分解为两个文件。这个例子就是你如何基本上擦除页面(或页面上的元素并重新加载它)。所以你将有第一页

    <?php

$i=0;

while($i<100){
    echo (file_get_contents("http://192.241.240.69/hakre/page2.php?var=$i"));
    flush();
    ob_flush();
    usleep(200000);
    $i++;
}

这调用第2页,它具有javascript擦除页面功能(可以擦除单个元素并使用更新的内容重新加载它(参见下面的第二页代码)

    <?php

$var = $_GET['var'];
echo '<script type="text/javascript">'."document.body.innerHTML = ''".'</script>';
echo $var;

?>

结果将是http://192.241.240.69/hakre/page1.php - 不是最性感的解决方案,但它确实只使用一行javascript和几乎所有PHP与flush函数一起使用。以下是按列http://192.241.240.69/hakre/Table.php

编写页面列的示例