我有一个网页(在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非常生疏
答案 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>