2016-05-20 5 views
2

が、私は(ここJOBYジョセフからの助けを借りて)、PHPでHTMLテーブルに変換されたCSVファイルを持っている値最初の2つの列の値に基づいて別々のテーブルとコンテナのdivに変換します。これは私のCSVデータであれば:CSVファイルは

League,Team,Date,Opponent,Result 
american,MIN,May 3,UTA,W 
american,MIN,May 4,SEA,L 
american,SAC,May 3,DAL,L 
american,SAC,May 4,TOR,W 
national,NYN,May 5,BAL,L 
national,NYN,May 7,MIA,W 
national,DET,May 6,DEN,L 
national,DET,May 7,POR,L 

4つの作成した表(MIN、SAC、NYN、及びDET)、そして彼らは、私がすでに作成しているコンテナのdiv要素の中に置かれる、「アメリカン・コンテナがあるでしょう最初の2つは "2番目の2つは"国家のコンテナ "。理想的には、各テーブルには2つのヘッダー行(チーム名と列ラベル)と日付/相手/結果データがあります。任意の助け

function jj_readcsv($filename, $header=false) { 
$handle = fopen($filename, "r"); 
echo '<table>'; 
//display header row if true 
if ($header) { 
    $csvcontents = fgetcsv($handle); 
    echo '<tr>'; 
    foreach ($csvcontents as $headercolumn) { 
     echo "<th>$headercolumn</th>"; 
    } 
    echo '</tr>'; 
} 
// displaying contents 
while ($csvcontents = fgetcsv($handle)) { 
    echo '<tr>'; 
    foreach ($csvcontents as $column) { 
     echo "<td>$column</td>"; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 
fclose($handle); 
} 
jj_readcsv('test.csv',true); 

ありがとう:以下の1つのテーブルにcsvファイルを置くJOBYのソリューションです。

+0

は問題が先生を解決している場合:)解決として私の答えをマークするために、もちろん –

+0

を忘れてしまったが、私はありませんまだそれの一部を理解しようとしています。 – Beau

答えて

2

これは動作するはずです:ここでは

<?php 
$csv = "League,Team,Date,Opponent,Result\namerican,MIN,May 3,UTA,W\namerican,MIN,May 4,SEA,L\namerican,SAC,May 3,DAL,L\namerican,SAC,May 4,TOR,W\nnational,NYN,May 5,BAL,L\nnational,NYN,May 7,MIA,W\nnational,DET,May 6,DEN,L\nnational,DET,May 7,POR,L"; 
$csv_array = explode("\n", $csv); 
$tables = []; 
foreach($csv_array as $key => $value) { 
    if ($key == 0) { 
     continue; 
    } 
    $line = explode(',', $value); 
    if (array_key_exists($line[1], $tables)) { 
     $tables[$line[1]][] = $line; 
    } else { 
     $tables[$line[1]] = [$line]; 
    } 
} 

foreach ($tables as $key => $value) { 
    echo '<h1> ' .$key. ' </h1>'; // YOUR TITLE (Team) 
    echo "<table>"; 
    echo '<tr>'; 
    foreach (explode(',', $csv_array[0]) as $keyHeader => $valueHeader) { 
     if (in_array($keyHeader, [0, 1])) { 
      continue; 
     } 
     echo "<th>$valueHeader</th>"; 
    } 
    echo '</tr>'; 
    foreach ($value as $keyRow => $valueRow) { 
     echo '<tr>'; 
      foreach ($valueRow as $keyValue => $valueValue) { 
       if (in_array($keyValue, [0, 1])) { 
        continue; 
       } 
       echo "<td>$valueValue</td>"; 
      } 
     echo '</tr>'; 
    } 
    echo '</table>'; 
} 

は私が得るものです: Jsfiddle

+0

ありがとう、Sofiene、しかし最初の2つの列はテーブルデータの一部であってはなりません。最初のカラムはdivを入れるためのもので、2番目のカラムはカラムのラベルの上にあるヘッダ行です。 'NYN
日付相手名
5月5日BAL L' – Beau

+0

@Beau私はコードを更新しました;)、私はテーブルの上にH1のリーグを置く:) –

+0

@Beauは解決された問題ですか? –