PHP函数中CSV导入的输出

时间:2018-02-18 14:36:54

标签: php html csv import

我在PHP中有一个函数,它创建一个包含CSV文件数据的HTML表。

问题是每个表的标题是两次打印。首先是<th>,然后是第一个<tr>。我希望标题仅打印在<th>而不是以下<tr>中。 什么是错误,你有其他PHP功能的建议。

csv示例

title a, Titel A 
example1, Beispiel1
example2, Beispiel2

title b, Titel B
example1, Beispiel1
example2, Beispiel2

php功能

function CreateLangTable($csvFile, $startRow, $endRow, $number) {
    global $lang_code1, $lang_code2, $vocabulary_group, $urlArray;

    if ($endRow < $startRow) {
        return;
    }
    echo ' 
  <a id="' . $vocabulary_group[$urlArray[4]][$number] . '"></a>  
 <div class="table-responsive">  
  <table class="table table-hover table-bordered table-striped table-fixed">                           
    <thead class="blue-grey lighten-4">';
    $csvFile->seek($startRow);
    vprintf('
        <tr>  
          <th><div data-text="%1$s" data-lang="' . $lang_code1 . '" class="trigger_play"> %1$s</div></th> 
          <th><div data-text="%2$s" data-lang="' . $lang_code2 . '" class="trigger_play"> %2$s</div></th>
        </tr>
    </thead>
    <tbody>', $csvFile->current());
    while ($csvFile->key() <= $endRow) {
    vprintf('   
        <tr>
          <td><div data-text="%1$s" data-lang="' . $lang_code1 . '" class="trigger_play"> %1$s</div></td> 
          <td><div data-text="%2$s" data-lang="' . $lang_code2 . '" class="trigger_play"> %2$s</div></td>
        </tr>', $csvFile->current());
 $csvFile->next();              
    }

    echo '
    </tbody>
  </table>
</div>' . "\n";
}
if ($urlArray[3] == "vokabeln" &&  isset($urlArray[4])) { // Undefined offset: 3 [only until /url1/url2/]
    $file = new SplFileObject($_SERVER['DOCUMENT_ROOT'] . "/$urlArray[1]/csv/$urlArray[4].csv");
    $file->setFlags(SplFileObject::READ_CSV);
}

php代码,用于生成此CSV示例的HTML表格:

CreateLangTable($file, 0, 2, 0);
CreateLangTable($file, 4, 6, 1);

1 个答案:

答案 0 :(得分:2)

$csvFile->seek($startRow);行获取指向标题的指针 然后while ($csvFile->key() <= $endRow)从同一点开始循环。 在'while()'之前应该有一个$csvFile->next(); 这是
$csvFile->next();
while ($csvFile->key() <= $endRow) {...}