PHP - CSV 标头在分页的第一页显示两次


PHP - CSV header displayed twice in first page of pagination

我是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


  • 我的其余数据


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

问题是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>';
}