附加数据并显示html表

时间:2017-10-21 16:06:36

标签: php

我有一些数据集。我想安排这样的数据:

table1

我的代码显示如下结果:

table2

我该如何解决这个问题。这是我的代码:

<?php
echo "<tr><th></th><th>Control</th><th>Sub 1</th><th>Sub2</th></tr>";
    $i=0;
    $PrevIssoff=0;
    $sql="SELECT `code`, `name`,`type` 
            FROM `testdate` 
            WHERE `code`='11111'
            ORDER BY `code` ASC, `type` ASC ";
    $result=mysql_query($sql);
    while($row=mysql_fetch_array($result)){
        $frm=$row['code'];
        if ($frm != $PrevIssoff && $row['type']==0)
            {
            $i=$i+1;
            $PrevIssoff=$frm;           
            echo "<tr><td>$i</td><td>$row[name]</td><td></td><td></td></tr>";
            }   
        else if($row['type']==1 )
            {
            echo "<tr><td></td><td></td><td>$row[name]</td><td></td></tr>";
            }
        else if ($row['type']==2)
            {
            echo "<tr><td></td><td></td><td></td><td>$row[name]</td></tr>";
            }
    }

    echo"</table>";
?>

数据库表结构 - testdate

databasetable

1 个答案:

答案 0 :(得分:0)

首先,您的数据需要规范化。如果你看起来足够努力,应该有一种编写数据库查询的方法来跳过这一步。

遍历 while循环中的每一行,构建一个数组的近似表示。

$dataTable = [];
while ($row = mysqli_fetch_array($result)) {
  $numRows = count($dataTable);
  $lastRowIndex = $numRows == 0 ? 0 : $numRows-1;

  if($numRows == 0) {
     $dataTable[] = [];
  }

  if(count($dataTable[$lastRowIndex]) == 3) {
     $dataTable[] = [];
     $lastRowIndex += 1;
  }

  $type = $row['type'];
  $dataTable[$lastRowIndex][$type] = $row['name'];
}

然后制作您的$rowsMarkup,可以很容易地与表格标题连接。

$rowsMarkup = array_map(function($row) {
  return '<tr>'.
         '<td>'.$row[0] .'</td>'.
         '<td>'.$row[1] .'</td>'.
         '<td>'.$row[2] .'</td>'.
         '</tr>';
  }, 
  $dataTable
);