gpt4 book ai didi

php - 如何使用 Ajax、PHP 和 JQuery 检查多个输入复选框?

转载 作者:行者123 更新时间:2023-11-29 21:54:00 24 4
gpt4 key购买 nike

我正在对数据库中的产品进行简单的类别管理,但我很难找到一个好的算法来检查数据库表中属于特定类别的项目的复选框。

基本上,我使用 JQuery Ajax 调用以下 PHP 文件:

<?php 
include_once('config.php');
$id = $_POST['fetchID'];

//Create PDO Object
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
//Set Error Handling for PDO
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
//Query

$sql = "SELECT prod_cat.cat_id FROM prod_cat LEFT JOIN products ON products.id = prod_cat.product_id LEFT JOIN category on category.cat_id = prod_cat.cat_id WHERE id = $id";
//Prepare Statement
$stmt = $con->prepare($sql);
$stmt->execute();

echo "<button id='backBtn-$id' class='backBtn'></button>
<!-- Left Column -->
<section class='adminLCol'>
<h4>Menu</h4>
<form class='updateProductCategory' id='updateProductCat-$id' method='post' action=''>
<input class='input_class_checkbox' type='checkbox' id='basicCollection_$id' name='cat[]' value='Basic Collection' checked>Basic Collection<br />
<input class='input_class_checkbox' type='checkbox' id='teesAndTanks_$id' name='cat[]' value='Tees and Tanks' checked>Tees and Tanks<br />
<input class='input_class_checkbox' type='checkbox' id='shirts_$id' name='cat[]' value='Shirts'>Shirts<br />
<input class='input_class_checkbox' type='checkbox' id='topsAndBlouses_$id' name='cat[]' value='Tops and Blouses'>Tops and Blouses<br />
</form>
</section>

<!-- Right Column -->
<div class='adminRCol'>
<section class='adminRContent'>
<h4>Visibility</h4>
<form>
<input class='radio_selection' type='radio' name='visibility' value='Enable' checked>Enable<br />
<input class='radio_selection' type='radio' name='visibility' value='Disable'>Disable
</form>
</section>
</div>";
?>

类别表如下所示:

+-------------+-------------------+
| cat_id | name |
+-------------+-------------------+
| 1 | Basic Collection |
| 2 | Tees and Tanks |
| 3 | Shirts |
| 4 | Tops and Blouses |
+-------------+-------------------+

这就是我的产品表的样子:

+----+-----------------+------------------+
| id | name | description |
+----+-----------------+------------------+
| 2 | Product One | Made in Portugal |
| 3 | Product Two | Made in Brazil |
+----+-----------------+------------------+

这就是我的 prod_cat 表的样子:

+------------+-------------+
| prod_id | cat_id |
+------------+-------------+
| 2 | 1 |
| 3 | 1 |
| 2 | 2 |
| 2 | 4 |
+------------+-------------+

上面的 PHP 文件连接到我的数据库并获取产品所属的类别。这就是 products.id = 2$sql 输出的样子:

+-------------+
| cat_id |
+-------------+
| 1 |
| 2 |
| 4 |
+-------------+

现在,正如您所看到的,这些是应该在我的表单中检查的 3 个类别,其中包含所有复选框。这就是我陷入困境的地方。如果只检查这 3 个类别,检查这些复选框的好方法是什么?

如果您需要有关该问题的更多详细信息,请发表评论。

谢谢

编辑:我在 $stmt->fetchAll() 的 select 语句上执行了 print_r,以下是我得到的结果数组。我不知道该怎么办。我将其发布在这里,如果它有任何用处:

Array ( [
0] => Array (
[cat_id] => 1 [0] => 1
)
[1] => Array (
[cat_id] => 2 [0] => 2
)
[2] => Array (
[cat_id] => 4 [0] => 4
)
)

最佳答案

如果我正确理解了这个问题,那么您使用外连接的方式不正确。

我会使用:

$sql = "SELECT name FROM category "
. "JOIN prod_cat ON prod_cat.cat_id = category.cat_id "
. "WHERE prod_cat.prod_id = ?";

获取结果:

$stmt = $con->prepare($sql);
$stmt->execute(array($id));
$result = $stmt->fetchAll();

将二维数组转为一维数组:

$array = array_map('current', $result);

然后检查每个复选框是否产品属于特定类别,例如:

if (in_array('Basic Collection', $array)) {
echo 'checked';
}

不需要 Ajax 或 jQuery。

顺便说一句,当您要将用户输入像这样放入查询中时,使用准备好的语句没有什么意义。

关于php - 如何使用 Ajax、PHP 和 JQuery 检查多个输入复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33358337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com