【问题标题】:PHP - CSV header displayed twice in first page of paginationPHP - CSV标题在分页的第一页显示两次
【发布时间】:2013-10-02 02:35:38
【问题描述】:

我是 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 标题。例如,我当前的第一页如下所示。

  • Column1 Column2 Column3
  • 列1 列2 列3


  • 我的其他数据


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

【问题讨论】:

    标签: php


    【解决方案1】:

    问题是csv不区分header和实际数据,所以第一页从文件的第一行开始输出。您必须从第 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>';
    }
    

    【讨论】:

    • 我尝试了你的建议。如果我在访问了一些其他页面后返回第一页,则第一页的内容不会以表格格式显示。
    • 所以第一次显示一切OK,第二次就没有表格格式了?
    • 即使在第一次实际上标题显示两次。
    • 也许在你的分页类第一页是0,而不是1?
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2019-03-10
    相关资源
    最近更新 更多