我正在使用for循环生成9行表,其名称标识符根据行升序。
<?php
$x = 0;
for ($x=0; $x<=8; $x++) {
echo '<tr>';
echo '<td style="width:200px;"><input type="text" name="title' . $x .'"></td>';
echo '<td><input type="text" name="description' . $x .'"></td>';
echo '<td style="width:50px;"><input type="number" name="cost' . $x .'"></td>';
echo '</tr>';
} ?>
HTML干净利落,就像我想要的那样。
<tr>
<td style="width:200px;"><input type="text" name="title0"></td>
<td><input type="text" name="description0"></td>
<td style="width:50px;"><input type="number" name="cost0"></td>
</tr>
<tr>
<td style="width:200px;"><input type="text" name="title1"></td>
<td><input type="text" name="description1"></td>
<td style="width:50px;"><input type="number" name="cost1"></td>
</tr>
<tr>
<td style="width:200px;"><input type="text" name="title2"></td>
<td><input type="text" name="description2"></td>
<td style="width:50px;"><input type="number" name="cost2"></td>
</tr>
请注意,“name”属性是递增的,因此可以轻松收集表单数据。 但是,我不知道如何使用另一个for循环来创建复合变量以与提交的html对齐。 我想要一个循环来创建一个声明列表......
$form0 = $_POST['form0'];
$form1 = $_POST['form1'];
等,没有输入24个变量声明。 有帮助吗? :)
答案 0 :(得分:1)
$formData = array();
for($i = 0; $i < 23; $i++)
{
$formData[$i] = $_POST['cost' .$i];
}
这是一个简单的循环,将循环24次并为您收集数据并将其保存在数组中
答案 1 :(得分:1)
你可以这样做,但正如你已经开始看到的那样,这是一种可怕的方式。使用数组
<?php
$x = 0;
for ($x=0; $x<=8; $x++) {
echo '<tr>';
echo '<td style="width:200px;"><input type="text" name="title[' . $x .']"></td>';
echo '<td><input type="text" name="description[' . $x .']"></td>';
echo '<td style="width:50px;"><input type="number" name="cost[' . $x .']"></td>';
echo '</tr>';
} ?>
更好的是,把它们放在一个多暗的阵列中:
<?php
$x = 0;
for ($x=0; $x<=8; $x++) {
echo '<tr>';
echo '<td style="width:200px;"><input type="text" name="row[title][' . $x .']"></td>';
echo '<td><input type="text" name="row[description][' . $x .']"></td>';
echo '<td style="width:50px;"><input type="number" name="row[cost][' . $x .']"></td>';
echo '</tr>';
} ?>
这样你就可以轻松地遍历它们,例如
foreach ($_POST['row'] as $row) {
// do something with these:
// $row['title']
// $row['description']
// $row['cost']
}
答案 2 :(得分:0)
一些可能性..
您可以使用简单的for
循环并将它们存储在单独的变量中。
for($i=0;$i<=8;$i++)
{
$form.$i = $_POST['form'.$i];
}
或将它们存储在数组中..
$form_arr = array();
for($i=0;$i<=8;$i++)
{
$form_arr[] = $_POST['form'.$i];
}
答案 3 :(得分:0)
你可以尝试这个吗,使用title[]
echo '<tr>';
echo '<td style="width:200px;"><input type="text" name="title[]"></td>';
echo '<td><input type="text" name="description[]"></td>';
echo '<td style="width:50px;"><input type="number" name="cost[]"></td>';
echo '</tr>';
获取POST值,
foreach($_POST['title'] as $key=>$title){
echo $title;
echo $description = $_POST['description'][$key];
echo $cost = $_POST['cost'][$key];
}