【问题标题】:Creating several tables from CSV with PHP使用 PHP 从 CSV 创建多个表
【发布时间】:2014-07-09 23:05:44
【问题描述】:

以下代码适用于 CSV 文件。

但我想创建多个表,并且值在同一个 CSV 中。

我应该如何使用第二个表中的$rowcount,它应该看起来像第一个表,只有其他第一个值用于 th 和以下值用于 td。

<a name="akademische-berufe"></a> 
<table class="table-vocabulary">
<tbody>   
<?php 
$file = new SplFileObject("arbeit.csv");
$file->setFlags(SplFileObject::READ_CSV);

$rowcount = 0;
foreach ($file as $row) {
  $rowcount++;
  if ($rowcount == 1) {
  list($vokabel_en, $vokabel_de) = $row;      
    printf('
    <tr>
      <th><img src="/bilder/symbole/play.png" data-text="%1$s" data-lang="'.$lang_code1.'" class="trigger_play"> %1$s</th> 
      <th><img src="/bilder/symbole/play.png" data-text="%2$s" data-lang="'.$lang_code2.'" class="trigger_play"> %2$s</th>
    </tr>', $vokabel_en, $vokabel_de);
    continue;
}  
  if ($rowcount >= 31) break;
  list($vokabel_en, $vokabel_de) = $row;      
    printf('
    <tr>
      <td><img src="/bilder/symbole/play.png" data-text="%1$s" data-lang="'.$lang_code1.'" class="trigger_play"> %1$s</td> 
      <td><img src="/bilder/symbole/play.png" data-text="%2$s" data-lang="'.$lang_code2.'" class="trigger_play"> %2$s</td>
    </tr>', $vokabel_en, $vokabel_de); 
}  
?>
</tbody>
</table>

【问题讨论】:

    标签: php html-table import-from-csv


    【解决方案1】:

    使用您想要的参数创建一个函数。让函数也回显(打印)表格标签,你就完成了。

    用户自定义的php函数: http://www.php.net/manual/en/functions.user-defined.php

    代码可能如下所示:

    <a name="akademische-berufe"></a>  
    <?php
    function CreateLangTable($csvFile, $startRow, $endRow) {
      if ($endRow < $startRow) {
        return;
      }
    
      echo '<table class="table-vocabulary"><tbody>';
    
      $csvFile->seek($startRow);
    
      vprintf('
          <tr>
            <th><img src="/bilder/symbole/play.png" data-text="%1$s" data-lang="'.$lang_code1.'" class="trigger_play"> %1$s</th> 
            <th><img src="/bilder/symbole/play.png" data-text="%2$s" data-lang="'.$lang_code2.'" class="trigger_play"> %2$s</th>
          </tr>', 
          $csvFile->current());
    
      while ($csvFile->key() <= $endRow) {
        $csvFile->next();
    
        vprintf('
          <tr>
            <td><img src="/bilder/symbole/play.png" data-text="%1$s" data-lang="'.$lang_code1.'" class="trigger_play"> %1$s</td> 
            <td><img src="/bilder/symbole/play.png" data-text="%2$s" data-lang="'.$lang_code2.'" class="trigger_play"> %2$s</td>
          </tr>', 
          $csvFile->current());
      }
    
      echo '</tbody></table>';
    }
    
    $file = new SplFileObject("arbeit.csv");
    $file->setFlags(SplFileObject::READ_CSV);
    
    CreateLangTable($file, 1, 31);
    
    CreateLangTable($file, 33, 58);
    ?>
    

    编辑:如果您有空行来划分表格,而不是

    while ($csvFile->key() <= $endRow)
    

    你可以使用

    while (!empty($csvFile->current()))
    

    然后您显然可以省略/删除函数参数 $endRow

    【讨论】:

    • 谢谢,但我不知道怎么做?可以给我看看吗?
    • 好的,没问题。给我几分钟。
    • 您希望如何更改 th 和 td 中的值?那里应该改变什么?
    • 第一桌 1 td's 2-31, 第二桌 33, td's 34-58​​span>
    • 是的,well list 是一个相当古老的结构,在我看来根本不应该在 php 中使用。并且由于您使用 SplFileObject,也许在一个对象中完成整个事情是明智的......但是该函数也可以正常工作。虽然代码中存在一些基本的设计错误,但您会及时了解并练习。
    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    相关资源
    最近更新 更多