使用PHP简化HTML表格代码

时间:2013-08-28 20:34:13

标签: php html html-table html-form

我有一个网页(在PHP文件中创建),需要显示一个30行长的表,并允许用户为30行中的每一行输入值,然后按一个按钮让php处理他们拥有的内容输入

无论如何,不​​必写出一个包含30行的普通HTML表单,我想知道他们是否可以用更少的代码在PHP中创建这个表。

因为它看起来像

<form name="createtable" action="?page=createtable" method="POST" autocomplete="off">
    <table border='1'>
        <tr>
            <th> Weight </th>
            <th> CBM Min </th>
            <th> CBM Max </th>
            <th> Min </th>
        </tr>
        <tr>
            <th> 1000 </th>
            <th> 0.1 </th>
            <th> 2.3 </th>
            <th> <input type=text name=min1> </th>
        </tr>
        <tr>
            <th> 1500 </th>
            <th> 2.31 </th>
            <th> 3.5 </th>
            <th> <input type=text name=min2> </th>
        </tr>
        <tr>
            <th> 2000 </th>
            <th> 3.51 </th>
            <th> 4.6 </th>
            <th> <input type=text name=min3> </th>
        </tr>
            ..... + 27 more rows
    </table>
</form>

我目前正在编写如上所示的完整表格,重量,cbm min和max的值不会以标准速率增加,因此正常循环不起作用我想,这些值是否可以放入数组中?我的php非常生疏

2 个答案:

答案 0 :(得分:2)

这是一个可能的解决方案。

/* this should contain all rows, a resultset from a database,
   or wherever you get the data from */
$rows = array(
    array(
      'weight' => 1000,
      'cbm_min' => 0.1,
      'cbm_max' => 2.3
    ),
    array(
      'weight' => 1500,
      'cbm_min' => 2.31,
      'cbm_max' => 3.5
    ),
    array(
      'weight' => 2000,
      'cbm_min' => 3.51,
      'cbm_max' => 4.6
    )
); 

?>
<form name="createtable" action="?page=createtable" method="POST" autocomplete="off">
  <table border='1'>
    <tr>
      <th> Weight </th>
      <th> CBM Min </th>
      <th> CBM Max </th>
      <th> Min </th>
    </tr>
<?php
$i = 1; // I'll use this to increment the input text name
foreach ($rows as $row) {
  /* Everything happening inside this foreach will loop for
     as many records/rows that are in the $rows array. */
 ?>
    <tr>
      <th> <?= (float) $row['weight'] ?> </th>
      <th> <?= (float) $row['cbm_min'] ?> </th>
      <th> <?= (float) $row['cbm_max'] ?> </th>
      <th> <input type=text name="min<?= (float) $i ?>"> </th>
    </tr>
  <?php
  $i++;
}
?>
  </table>
</form>
<?php
// Continue executing PHP

答案 1 :(得分:0)

你绝对可以使用PHP

来做到这一点

您需要一个2D数组才能包含所有<tr> * <th>中显示的值,即30 * 3,因为第三列将包含{{1 }}

很容易找到声明数组和编写for循环的语法。

<input>