php - 发布带有值的动态复选框 ID

标签 php mysql arrays post

这是一个表单,其中包含从名为“categories”的数据库表中检索的动态复选框。我所尝试的只是在新页面上回显类别 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/

相关文章:

PHP PDO::MySQL 和 JQuery 和 Ajax

javascript - 如何在 php 中使用 javascript 代码?

php - 在以 PHP 运行的 MySQL 文件中使用 PHP session 变量?

php - 如何使用morris js为饼图的动态数据着色?

mysql - 根据业务 X 周和 X 计数后,录音标记为删除

c++ - 如何将动态分配的内存释放到结构内的数组?

javascript - 使用 Angular js 迭代数组并将值存储为对象的键和值

Javascript:Is-SubArray 返回 false

php - 如何在数据库中管理国家

php - 为什么我的旧密码无法更改为新密码