0

我是 PHP 新手,并尝试使用分页选项在我的网页中以表格格式显示 CSV 数据。这是我到目前为止的代码。

<?php
$names = file('demo.csv');
$page = $_GET['page'];
$pagedResults = new Paginated($names, 20, $page);
echo "<table border='2' bgcolor='#fbd998' style='float:center; margin:20'>";
//when $row is false loop terminates
while ( $row = $pagedResults->fetchPagedRow())
{
    echo "<tr><td>";
    $row1 = str_replace( ',', "</td><td>", $row );
    echo $row1;
    echo "</td></tr>";
}
echo "</table>";
//important to set the strategy to be used before a call to fetchPagedNavigation
$pagedResults->setLayout(new DoubleBarLayout());
echo $pagedResults->fetchPagedNavigation();
?>

问题是,除了第一页,我无法显示 CSV 标题信息。为了避免这种情况,我使用处理程序从 CSV 文件(包含标题信息)中单独提取第一行。我在 while 循环之前添加了以下代码。

if (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
{
}
echo "<table border='2' bgcolor='#fbd998' style='float:center; margin:20'>";
echo '<tr><th>'.implode('</th><th>', $data).'</th></tr>';

除了在第一页中,我有两次 CSV 标头之外,此策略似乎在所有页面中都运行良好。例如,我当前的第一页如下所示。

  • 列 1 列 2 列 3
  • 列 1 列 2 列 3


  • 我的其余数据


有人可以指导我如何解决这个问题吗?

4

1 回答 1

0

问题是csv不区分标题和实际数据,所以第一页从文件的第一行开始输出。您必须从第 nr 行开始读取数据。2,或停止在第 nr 页显示页眉。1.

尝试改变

echo "<table border='2' bgcolor='#fbd998' style='float:center; margin:20'>";
echo '<tr><th>'.implode('</th><th>', $data).'</th></tr>';

对此:

if ($page != 1){
  echo "<table border='2' bgcolor='#fbd998' style='float:center; margin:20'>";
  echo '<tr><th>'.implode('</th><th>', $data).'</th></tr>';
}
于 2013-10-01T18:35:38.397 回答