单选按钮上的自动增量名称属性

时间:2013-04-19 01:58:06

标签: php html-form

我有一个带有一组单选按钮的表单,我将使用php将选中按钮的值发送到另一个页面。表单可以选择添加另一组相同的单选按钮,所以如果我使用以下方法给出名称属性:

<div>
    <input type="radio" name="food[]" value="apple" /> Apple
    <input type="radio" name="food[]" value="orange" /> Orange
</div>

并添加上述的克隆,

$_POST['food'];

这将为我提供每个输入的值,并且总共为4.我正在尝试使用括号递增方法,但仍然保留返回已检查的单选按钮的值的功能。

所以我的问题是,是否有一种方法可以使用方括号对name属性进行自动递增,但是当将值发送到php时,请确保每个div分组的单选按钮仅返回其中一个值。检查?如果这个问题太模糊,请告诉我,这是我的第一个问题。

2 个答案:

答案 0 :(得分:0)

我可能不明白你的问题。您无法自动增加名称,因为您使用单选按钮。通过选择第一页上的苹果和第二页上的橙色,您将失去第一个选择(苹果)。您可以使用复选框而不是单选按钮来执行此操作:

第1页:

<form method="post" action="page2.php">
<div>
    <input type="checkbox" name="numberofapples" value="1" /> Apple
    <input type="checkbox" name="numberoforanges" value="1" /> Orange
</div>
<input type="submit" value="go">
</form>

第2页:

<form method="post" action="result.php">
<div>
    <?if($_POST['numberofapples']){?><input type="hidden" name="numberofapples" value="1" /> <?}?>
    <input type="checkbox" name="numberofapples" value="<?=($_POST['numberofapples'])?2:1?>" /> Apple
    <?if($_POST['numberoforanges']){?><input type="hidden" name="numberoforanges" value="1" /> <?}?>
    <input type="checkbox" name="numberoforanges" value="<?=($_POST['numberoforanges'])?2:1?>" /> Orange
</div>
<input type="submit" value="go">
</form>

结果页面:

Apples: <?=($_POST['numberofapples'])?$_POST['numberofapples']:0?>
Oranges: <?=($_POST['numberoforanges'])?$_POST['numberoforanges']:0?>

但为什么不在发布第二页后进行计数呢? (将第1页中的帖子值作为隐藏字段添加到第2页的表单中)

答案 1 :(得分:0)

如果你想使用几个具有相同输入名称的div组,我会像这样创建它们:

<div>
    <input type="radio" name="food[0][]" value="apple" /> Apple
    <input type="radio" name="food[0][]" value="orange" /> Orange
</div>
<div>
    <input type="radio" name="food[1][]" value="apple" /> Apple
    <input type="radio" name="food[1][]" value="orange" /> Orange
</div>
<div>
    <input type="radio" name="food[2][]" value="apple" /> Apple
    <input type="radio" name="food[2][]" value="orange" /> Orange
</div>

因此,在PHP中,您将每个组分成不同的键。例如

print_r( $_POST['food'] );

应该返回这样的内容:

array(
  [0] => array(
    [0] => 'apple'
  ),
  [1] => array(
    [0] => 'orange'
  ), 
  [2] => array(
    [0] => 'apple',
    [1] => 'orange'
  )
)