这个标题可能并不重要,但我拥有的是动态生成的表单。我挂进一张产品表,拉出那里的名字。然后,我创建一个显示产品的表单,旁边有一个复选框和文本框。
<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>
正如您所看到的,每条记录都有复选框和文本字段。当我从表单中检查$ _POST数据时,它只保留最后一条记录的字段。
有没有办法将所有这些数据传回给行动?
干杯,
Jonesy
答案 0 :(得分:14)
使用name="chk[]"
,然后PHP将为您创建一个数组。
答案 1 :(得分:4)
将您的名称属性更改为具有这样的开始和结束方括号:
name="tags"
name="chk"
到
name="tags[]"
name="chk[]"
这将变成如下数组:
$_POST['tags'][0] = VALUE
$_POST['tags'][1] = VALUE
$_POST['chk'][0] = VALUE
$_POST['chk'][1] = VALUE
答案 2 :(得分:1)
是的,您可以在名称值的末尾设置括号。 E.g:
<input type="checkbox" name="chk[]" id="'. $product .'">
然后在$_POST['chk']
中得到一个数组。
除此之外,ID应始终是唯一的。您可以指定相同的名称,但应始终使用不同的ID。
答案 3 :(得分:0)
所有字段都具有相同的名称,如果在任何表单上发生这种情况,您最终只会看到最后一个值,因为它被其他字段覆盖。
而不是<input type="checkbox" name="chk" id="124123">
执行<input type="checkbox" name="chk[124123]" value='1'>
在你的代码中,你会收到$ _POST ['chk']作为一个值数组,只有那些被检查过的值。
答案 4 :(得分:0)
你可以使用我给出的例子如下。我把一个新的变量$ i = 0;然后你可以使用这个$ i进入foreach循环,逐个显示所有产品.. 我认为这可能对你有所帮助。
$i = 0;
foreach ($products as $product){
echo '<td><input type="checkbox" name="chk" id="'. $product[$i] .'"></td>';
}