PHP表单仅在一系列输入中发布最后一个值

时间:2016-02-19 20:58:17

标签: php forms button

附上我的代码图片。我试图传递名为' num'的任何按钮的index.php值(4或8)。单击选择Snacks.php并回显变量$ snacks。

问题是它只传递表格中的最后一个值输入(即8),无论我是否点击4或8.我颠倒了输入的顺序只是为了仔细检查,当我这样做时我无论我点击什么,都只能获得值4。

index.php上的输入

 <div class="pricing-button">
    <form method="POST" action="ChooseSnacks.php">
       <input class="btn btn-primary btn-md btn-square" onclick="change('19.99')" type="text" value = "4" name="num[]" readonly></a>
       <input class="btn btn-primary btn-md btn-square" onclick="change('25.00')" type="text" value = "8" name="num[]" readonly></a>                                            
 </div>

index.php上的提交按钮

 <input class="btn btn-primary btn-lg btn-square" type="Submit" name="Submit" id="Submit" value='Submit'>

在chooseSnacks.php上启动会话

<?php
session_start();
$snacks = $_POST['num[]'];
?>

回显变量

 <div class="categories">
  <h3>Your Carepackage</h3>
  <p> <?php echo $snacks; ?> Snacks Every <?php echo $snacksNum; ?> </p> </div

Index.php chooseSnacks.php

2 个答案:

答案 0 :(得分:1)

你的input typeTEXT,所以它会覆盖最后一个值。 如果您希望用户选择一个选项,您应该将类​​型更改为RADIO,或者将值和名称设置为空白并使用javascript更改

答案 1 :(得分:1)

关于$_POST['num[]'];,您需要从中删除[],因为您已在name="num[]"中将其声明为数组。

然后,您需要使用foreach($_POST['num'] as $var)并检查它们是否为空。

例如:

 <div class="pricing-button">
    <form method="POST" action="">
       <input class="btn btn-primary btn-md btn-square" onclick="change('19.99')" type="text" value = "4" name="num[]" readonly></a>
       <input class="btn btn-primary btn-md btn-square" onclick="change('25.00')" type="text" value = "8" name="num[]" readonly></a>

<input type="submit" name="Submit" value="Submit">

 </div>


<?php

$inputs = !empty($_POST['num']) ? $_POST['num'] : array();

foreach($inputs as $value) {

   echo $value . "<br>";

}

将回应:(经测试)

4
8

我不确定onclick="change('19.99')"等应该做出什么反应,以及您开始会话的会话需要。