从连续的名称值中收集$ _POST值

时间:2014-03-19 03:46:56

标签: php

我正在使用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个变量声明。 有帮助吗? :)

4 个答案:

答案 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)

一些可能性..

1

您可以使用简单的for循环并将它们存储在单独的变量中。

for($i=0;$i<=8;$i++)
{
    $form.$i = $_POST['form'.$i];
}

2。 (首选方式......

或将它们存储在数组中..

$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];

 }