我需要在特定时间内获得超过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>`
但是这段代码只提供如下所示的输出而没有列,行标签。第二个表是我在输出中所期望的。
PS:如果可以在jQuery / Javascript中完成,那么这些想法也值得欢迎。
答案 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) != '')