2017-02-16 7 views
2

PHPで動的テーブルを作成しようとしています。行の数は、mysqlから引き出されたレコードの数に基づいていますが、私は行内に4行しか必要としません。PHPを使用した動的テーブル

ヘッダ1ヘッダ2ヘッダ3ヘッダ4ヘッダ5ヘッダー6ヘッダー7ヘッダー:ここで私が取得しています私が今持っているもの

$sql = "SELECT t.tankid,t.TankName,tc.paramid,tc.active,pr.paramname,pr.minvalue,pr.maxvalue,pr.incvalue,pr.value from mr_tanks t inner join mr_testconfig tc ON tc.tankid = t.tankid inner join mr_parameters pr ON tc.paramid = pr.parameterid where t.tankid = :tankid and t.active = 1 and tc.active = 1"; 
$records1 = $con->prepare($sql); 
$records1->bindParam(':tankid', $_GET['tankid']); 
$records1->execute(); 
$headers = $col = ""; 
while ($row1 = $records1->fetch(PDO::FETCH_ASSOC)) { 
    $headers .= "<th> {$row1['paramname']} </th>"; 
    $col .= "<td> {$row1['minvalue']} </td>"; 
} 
echo "<table><tr>$headers</tr><tr>$col</tr></table>"; 
?> 

すべての行は、このような行であるされています8
データ1、データ2、データ3、データ4 データ5データ6データ7データ8

そして、私はそれがしたい

ヘッダ1ヘッダ2ヘッダ3ヘッダ4
データ1、データ2、データ3、データ4
ヘッダ5ヘッダ6ヘッダー7ヘッダ8
データ5データ6データ7データ8 ホール

_____________________________________________________________ 
    | TestName 1 | TestName 2 | TestName 3 | TestName 4 | 
    |___________________________________________________________| 
    | ResultTest1 | ResultTest2 | ResultTest3 | ResultTest 4| 
    _____________________________________________________________ 
    | TestName 5 | TestName 6 | TestName 7 | TestName 8 | 
    |___________________________________________________________| 
    | ResultTest5 | ResultTest6 | ResultTest7 | ResultTest 8 |   

<table> 
    <tr> 
     <th> TestName 1</th> 
     <th> TestName 2</th> 
     <th> TestName 3</th> 
     <th> TestName 4</th> 
    </tr> 
    <tr> 
     <td> ResultTest 1</td> 
     <td> ResultTest 2</td> 
     <td> ResultTest 3</td> 
     <td> ResultTest 4</td> 
    </tr> 
    <tr> 
     <th> TestName 5</th> 
     <th> TestName 6</th> 
     <th> TestName 7</th> 
     <th> TestName 8</th> 
    </tr> 
    <tr> 
     <td> ResultTest 5</td> 
     <td> ResultTest 6</td> 
     <td> ResultTest 7</td> 
     <td> ResultTest 8</td> 
    </tr> 
</table>   
+1

2つのテーブルを意味しますか? – JazZ

+0

テーブルが2つ必要ですか? –

+0

これは1つのテーブルです。ヘッダーにはテストの名前が入り、データには結果が表示されます。 –

答えて

0

行を2次元配列にチャンクしてループすることができます。各チャンクでは、それぞれ4行の別々のテーブルが提供されます。

最後のチャンクが4行未満の場合は、4列未満でテーブルを残すか、4列にする必要がある場合は空のparamname/minvalueを持つフィラー行を追加します。

$results = array(); 
while ($row1 = $records1->fetch(PDO::FETCH_ASSOC)) { 
    $results[] = $row1; 
} 

$results = array_chunk($results, 4); 
foreach($results as $chunk) { 
    $headers = ""; 
    $col = ""; 
    foreach($chunk as $row) { 
    $headers .= "<th> {$row)['paramname']} </th>"; 
    $col .= "<td> {$row)['minvalue']} </td>"; 
    } 
    echo "<table><tr>$headers</tr><tr>$col</tr></table>"; 
} 
関連する問題