PHP:当mutliple表单字段共享相同的名称和id时使用post

iam*_*esy 2 php forms webforms

这个标题可能并不意味着什么,但我拥有的是一个动态生成的表单.我挂进一张产品表,拉出那里的名字.然后,我创建一个显示产品的表单,旁边有一个复选框和文本框.

<form id="twitter-feed" name="twitter-feed" action="<?php echo $this->getUrl('tweet/') ?>index/tweet" method="post">
<table><tr>
<?php

$model = Mage::getModel("optimise_twitterfeed/twitterfeed");

$products = $model->getProducts();

foreach ($products as $product){
    echo '<tr>';
        echo '<td>';
            echo '<label for="'. $product .'">' . $product . '</label>';
            echo '<br /><input type="text" class="hashtag" name="tags" id="tags" value="#enter, #product, #hastag"';
        echo '</td>';
        echo '<td><input type="checkbox" name="chk" id="'. $product .'"></td>';
   echo '</tr>';
}
?>

<tr><td colspan="2"><input type="submit" name="submit" value="tweet"></td></tr>
</table>
</form>
Run Code Online (Sandbox Code Playgroud)

如您所见,每条记录都有复选框和文本字段.当我从表单中检查$ _POST数据时,它只保留最后一条记录的字段.

有没有办法将所有这些数据传递回动作?

干杯,

Jonesy

Thi*_*ter 15

使用name="chk[]",然后PHP将为您创建一个数组.


a1p*_*ric 5

更改您的名字arrtibutes,使其具有一个开闭方括号,如下所示:

name="tags"
name="chk"
Run Code Online (Sandbox Code Playgroud)

name="tags[]"
name="chk[]"
Run Code Online (Sandbox Code Playgroud)

这将使数组变为:

$_POST['tags'][0] = VALUE
$_POST['tags'][1] = VALUE

$_POST['chk'][0] = VALUE
$_POST['chk'][1] = VALUE
Run Code Online (Sandbox Code Playgroud)