使列数等于列标题的数量

时间:2013-10-25 14:34:25

标签: php mysqli dynamic html-table

我正在尝试使用PHP创建一个表格,我将在表格中设置一堆列标题,然后表格将仅显示这些列。

因此表格可以有4列或6列,具体取决于放入的日期范围。

最好的办法是什么,因为我尝试了一些事情,但没有任何东西接近我想要的东西。

以下是一些代码:

echo '<table>';
echo '<tr>';
echo '<th>Last Name</td>';
echo '<th>First Name</td>';
if($column_date1 != '') { echo '<th>' . $column_date1 . '</td>'; }
if($column_date2 != '') { echo '<th>' . $column_date2 . '</td>'; }
if($column_date3 != '') { echo '<th>' . $column_date3 . '</td>'; }
if($column_date4 != '') { echo '<th>' . $column_date4 . '</td>'; }
if($column_date5 != '') { echo '<th>' . $column_date5 . '</td>'; }
echo '</tr>';

// I will have a loop in here that searches records in a database.
$mysqliFunctionResult = $mysqliFunction->query($mysqliFunctionQuery);
while($line = $mysqliFunctionResult->fetch_assoc()) {
?><tr>
    <td><?php echo $line['tabledata1']; ?></td>
    <td><?php echo $line['tabledata2']; ?></td>
    <td><?php echo $line['tabledata3']; ?></td>
    <td><?php echo $line['tabledata4']; ?></td>
    <td><?php echo $line['tabledata5']; ?></td>
  </tr>
<?php } ?>
</table>

3 个答案:

答案 0 :(得分:0)

对$ _post数据执行foreach($ key =&gt; $ value)。然后使用$ key访问您提取的数据。对于每个键,回显您想要显示的相应数据。

答案 1 :(得分:0)

也许我可能会错过了解你的答案但是。这是我的理由。

/******************************
 * get the $database with same
 * names as the $_POST 
 *****************************/

<table>
<thead>
<tr>
    <?php // make the headers 
    foreach ($_POST as $column => $inside) {
        if (!empty($column)) {
            echo "<th>" . $column . "<th>";
        }
     }   
    ?>
</tr>
</thead>
<tbody>
foreach($database, $row) {
    foreach ($_POST as $column) {
        if (!empty($column)) {
            $row[$column];
        }
     }   
}
?>
</tbody>
</table>

我只是把它扔到了一起,我怀疑它是否接近完美,但也许可以让你知道一种方法来做到这一点。

答案 2 :(得分:0)

如果你可以像数组一样保存postdata,那就更容易了:

foreach($_POST['column_date'] as $column_date)
    if("" != $column_date)
        echo '<th>' . $column_date . '</td>';

...您必须将输入字段命名为column_date [1]等。