开发者

I need help making a PHP form parse code lighter

I have a PHP form which allows users to enter up 99 items if they do so desire. I was hoping that PHP doesn't need me to parse each individule item and it can handle doing a loop or something for when there are many items enter.

currently my php looks like this

$item1 = $_POST['Item1'] ;
$item2 = $_POST['Item2'] ;
$item3 = $_POST['Item3'] ;
$item4 = $_POST['Item4'] ;
$item5 = $_POST['开发者_运维知识库Item5'] ;
// etc, etc

But I don't want 99 lines of code if only 5% of people enter more than one item in the form.


Have all the inputs named items[] (note the []). You can then access them all in an array called $_POST['items']. You can then iterate through all the values:

foreach($_POST['items'] as $item)
{
  // ...
}


change the input-names like this:

<input type="text" name="items[]"/>
<input type="text" name="items[]"/>
<input type="text" name="items[]"/>

and you'll get an array:

$items = $_POST['items'] ;
foreach($items as $item){
  // walk throug items and do something
}


You need to name your input elements like this:

<input type="text" name="Item[]" value="A" />
<input type="text" name="Item[]" value="B" />
<input type="text" name="Item[]" value="C" />

And then in PHP you will see this in $_POST as an

array(
    0 => 'A',
    1 => 'B',
    2 => 'C'
)

This is a standard PHP trick, and you can use it to get any elements automatically inside the same array when reading them from $_POST and $_GET.


Another alternative :

foreach($_POST as $index => $value) {
  $item[$index] = $value;
}


for ($i = 1;$i<100;$i++)
{
    ${"item".$i} = $_POST['Item'.$i];
}

//or you can use variables directly
//echo ($_POST['Item1']);

or you can change Item1, Item2, .... in form to Items[] and then call it like

$items = $_POST['Items'];
print_r($items);
/*
array
(
    [0] => "some" 
    [1] => "text"
    [2] => "another"
    [3] => "text"          
)
*/


foreach ($_POST as $key=>$value) {
    if (substr($key, 0, 4)=="Item") {
        $item[substr($key, 4)]=$value;
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜