【问题标题】:Checkbox array inside foreach form. Associate each checkbox with another variableforeach 表单内的复选框数组。将每个复选框与另一个变量相关联
【发布时间】:2018-05-15 23:48:01
【问题描述】:

对于下面的示例,当所有复选框都被选中时,一切都会按预期工作。当检查一个或多个(但不是全部)时会出现问题。

<form action="someaction" method="post">
 <?php foreach ($fields as $field) { ?>
  <input type="checkbox" name="checkpid[]" value="<?php echo $field['pid']; ?>">
  <input type="hidden" name="checkprice[]" value="<?php echo $field['price']; ?>">
  <input type="submit" name="submit" value="Submit">
 <?php } ?>
</form>

<?php if (isset($_POST['checkpid'])) { ?>
 <?php
  $checkpid = $_POST['checkpid'];
  $checkprice = $_POST['checkprice'];
 ?>

  <?php foreach ($checkpid as $key => $checkpid) { ?>
   <?php
    $eachpid[] = $checkpid.",".$checkprice[$key];    
   ?>
  <?php } ?>

   <?php print_r($eachpid), ?> // the $checkpid is always as expected, but the $checkprice does not match its row.
<?php } ?>

据我所知,我怀疑 $key 的声明有问题,但我不知所措。

【问题讨论】:

    标签: php checkbox foreach key-value


    【解决方案1】:

    这就是我能建议的全部了。

    与其添加两个输入,不如将两个数据添加到以 | 分隔的复选框输入的值中。然后在提交时只需分解值并接收数组 1 为 id 和 1 为价格。

    <?php 
      if (isset($_POST['checkp'])) { 
    
        $checkp = $_POST['checkp'];
        foreach ($checkp as $check) { 
          $c = explode("|", $check);
          $eachpid[] = $c[0].",".$c[1];    
        }
    
        print_r($eachpid);
      } 
    ?>
    
    <form action="" method="post">
     <?php foreach ($fields as $field) { ?>
      <input type="checkbox" name="checkp[]" value="<?php echo $field['pid']; ?>|<?php echo $field['price']; ?>">
    <?php } ?>
    <input type="submit" name="submit" value="Submit">
    </form>
    

    【讨论】:

    • 我不会考虑为复选框赋予两个值。我喜欢这种方法。它也帮助我到达我想去的地方。非常感谢您的回答。
    • 太糟糕了,我不能投票给你的答案,因为我的声誉低于 15 :)
    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 2023-03-13
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多