2014-07-09 3 views
3

Следующий код работает с CSV-файлом.Создание нескольких таблиц из CSV с помощью PHP

Но я хочу создать несколько таблиц, а значения находятся в том же 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> 

ответ

3

Создайте функцию с необходимыми параметрами. Пусть функция также эхо (печатает) тег таблицы, и все готово.

определяемые пользователем функции 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); 
?> 

EDIT: В случае, если у вас есть пустые строки, разделяющие таблицы, то вместо

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

вы можете использовать

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

вы можете явно пропустить/удалить параметр функции $ EndRow

+0

Спасибо, но я не знаю, как? Вы можете мне это показать? – Grischa

+0

Хорошо, никаких проблем. Дайте мне несколько минут. – Santhos

+0

Как именно вы хотите изменить значения в th и td? Что там должно измениться? – Santhos

Смежные вопросы