这是一种表单,其中包含从名为“类别”的数据库表中检索到的动态复选框。我正在尝试的是在新页面上显示类别ID +名称。我想要所有选择的类别及其ID。问题是输出显示类别名称,但显示每个名称的最后一个类别ID。

形成

 <form method="post" action="insert_try.php" enctype="multipart/form-data">
 <label>Select categories</label>
 <?php
 $result = mysqli_query($con,"select * from categories");
 if (mysqli_num_rows($result) > 0) {
 while($row = mysqli_fetch_array($result)) {
 ?>
 <br><input type="checkbox" name="categories_chk[]" value="<?= $row["cat_name"]; ?>"> <?= $row["cat_name"]; ?>
 <input type="text" name="cat_chk_id" value="<?= $row["cat_id"]; ?>">
  <?php
       }
    }
    ?>
    <input type="submit" name="submit" value="Add">
    </form>


insert_try.php

if(isset($_POST['submit'])) {
$cat_chk = $_POST['categories_chk'];
$cat_chk_id=$_POST['cat_chk_id'];
foreach ($cat_chk as $checkbox) {
    echo $checkbox;
 }
echo $cat_chk_id;

最佳答案

我不知道您为什么需要这个,但在您的情况下,我会这样做:

while($row = mysqli_fetch_array($result)) {?>
    <br><input type="checkbox" name="categories_chk[<?= $row["cat_id"]; ?>]" value="<?= $row["cat_name"]; ?>"> <?= $row["cat_name"]; ?>
<?php
}


看,我将categories_chk的索引设置为类别ID。

如果您print_r($_POST['categories_chk'])您将有一个key => value数组,其中key是类别ID,而value是它的名称。

您可以对其进行迭代:

foreach ($_POST['categories_chk'] as $id => $name) {
    echo 'Category id ' . $id . ' with name ' . $name;
}


当然,我需要提到$row["cat_id"]对于这种方法必须是唯一的,否则您将在数组中拥有两个相同的键,而后者将覆盖前一个键。

关于php - 发布带有值的动态复选框ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43924335/

10-15 09:16
查看更多