在PHP中获取表的列,行标签

时间:2014-07-30 17:17:43

标签: php html-table

我需要在特定时间内获得超过15分的人并在HTML页面(表格)中显示,数据是从CSV加载的。 CSV文件如下所示:

test.csv 文件

Name,Sun 0:00,Sun 1:00,Sun 2:00,Sun 3:00,Sun 4:00
John,2,0,0,0,16
Alex,0,0,0,0,0
Dan,0,15,0,0,0
Jeff,0,0,30,0,0
Peter,12,0,0,0,0
Joe,0,0,0,0,340
Bill,0,0,340,0,0`

这是处理CSV并在HTML表格中显示的PHP文件。

<html>
<body>
<?php
echo "<html><body><table>\n\n";
echo "<style>\ntable,th,td\n{\nborder:1px solid black;\nborder-collapse:collapse\n}\n</style> ";
$f = fopen("test.csv", "r");
while (($line = fgetcsv($f)) !== false) {
    echo "<tr>";
    foreach ($line as $cell) {
            if ($cell >=15)
            echo "<td>" . htmlspecialchars($cell) . "</td>";
    }
    echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>
</body>
</html>`   

但是这段代码只提供如下所示的输出而没有列,行标签。第二个表是我在输出中所期望的。

enter image description here

PS:如果可以在jQuery / Javascript中完成,那么这些想法也值得欢迎。

2 个答案:

答案 0 :(得分:1)

忽略错误的标记(您复制了某些标记),您的错误是只有在值大于15时才打印单元格。您必须始终打印单元格,并且仅在格式为15时才打印内容。 :

<html>
    <body>
    <style>
    table,th,td
    {
        border: 1px solid black;
        border-collapse:collapse;
    }
    </style>
    <table>
    <?php
    $f = fopen("test.csv", "r");
    $i = 0;
    while (($line = fgetcsv($f)) !== false) {
        echo "<tr>";
        $j = 0;
        foreach ($line as $cell) {
            echo "<td>";
            if ($i==0 || $j==0 || $cell >= 15) {
                echo htmlspecialchars($cell);
            }
            echo "</td>";
            $j++;
        }
        echo "</tr>";
        $i++;
    }
    fclose($f);
    ?>
    </table>
    </body>
</html>

答案 1 :(得分:0)

对于任何非整数的事物,

if ($cell >=15)都会失败。因此,忽略所有字符串值

而不是使用

 if (trim($cell) != '')