【问题标题】:PHP form only posting last value in a series of inputsPHP表单仅在一系列输入中发布最后一个值
【发布时间】:2016-02-19 20:58:16
【问题描述】:

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

问题在于,无论我点击 4 还是 8,它都只会传递表单中的最后一个值输入(即 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

【问题讨论】:

  • 您的输入具有相同的名称,因此最后一个会覆盖其他输入。尝试数组name="num[]"
  • 是否需要更改 $snacks = $_POST['num'];到 $snacks = $_POST['num[]'];?因为在我尝试它们之后,它要么设置“数组”,要么设置为空白
  • 你需要遍历 $snacks 和 echo。
  • 太棒了。现在这个$_POST['num[]']; 您需要从那里删除[],因为您已经在name="num[]" 中拥有它。然后你只需使用foreach($_POST['num'] as $var),应该可以解决它。 @我如果你想让我提交作为答案@Nyhan
  • @Nyhan 我在下面发布了一个答案,您可以看看。如果这是您希望获得的预期结果,那对我有用。

标签: php forms button


【解决方案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')" 等应该做出什么反应,以及您开始会话时是否需要会话。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 2023-04-01
      相关资源
      最近更新 更多