【问题标题】:php - how to send all selected option values of 3 select boxes with for loop?php - 如何使用 for 循环发送 3 个选择框的所有选定选项值?
【发布时间】:2022-11-30 14:24:56
【问题描述】:

我正在尝试使用 for 循环创建 3 个选择框并发送每个框的所有选定选项值,但结果只循环 3 个框的第一个选定值。这是代码:

<?php
for ($a=0; $a < 3; $a++) {
?>
    <form action="" method="POST" id="formid">

        <select class="btn-secondary" name="selectid">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
    </form>
<?php  }?>
<input type="submit" name="submit" form="formid" value="Submit">


<?php
if (isset($_POST['submit'])) {
    $selectid = $_POST['selectid'];
    for ($i=0; $i < 3 ; $i++) {
        echo $selectid;
    }
    }

?>

【问题讨论】:

  • 它们都具有相同的名称,因此只会发送一组。给每个选择输入一个唯一的名字。
  • 知道如何为 for 循环内的每个选择标签指定唯一名称吗?
  • 您可以使用$a 在名称末尾添加一个数字。 name="selectid_&lt;?php echo $a; ?&gt;",这将使他们成为selectid_0selectid_1selectid_2
  • 我已经尝试了你的建议,但没有奏效。注意:未定义索引:selectid

标签: php html forms select


【解决方案1】:

首先,您需要将所有元素放在一个形状中。在您的情况下,您为每个循环通道创建一个新形状。

如果您将 [] 添加到您选择的名称中,那么所有内容都将放入一个数组中。 而不是name="selectid"你应该做类似name="selectid[]"的事情

应该是这样的,如果你检查 $_POST

[selectid] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )

所以你的整个循环应该是这样的:

<form action="" method="POST" id="formid">
<?php
for ($a=0; $a < 3; $a++) {
 ?>
    <select class="btn-secondary" name="selectid[]">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
    <?php  }?>
    <input type="submit" name="submit" form="formid" value="Submit">
</form>
<?php

if (isset($_POST['submit'])) {
   $selectid = $_POST['selectid'];
   // Here you can access every Select 
   // [0] -> 1st select , [1]-> 2nd select....
   foreach($selectid as $id){
       echo $id;
    }
 }
?>

【讨论】:

  • 我已经尝试了你的建议,但没有奏效。注意:数组到字符串的转换
  • 我还添加了 php 部分,现在它应该可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
相关资源
最近更新 更多