我正在爲我的數據庫中的產品做一個簡單的分類管理,我很難得到一個好的算法來檢查屬於我的數據庫表中特定分類的項目的複選框。如何使用Ajax,PHP和JQuery檢查多個輸入複選框?
基本上我使用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文件連接到我的數據庫並獲取產品所屬的類別。因此,這是$sql
輸出如何看起來像products.id = 2
:
+-------------+
| cat_id |
+-------------+
| 1 |
| 2 |
| 4 |
+-------------+
現在,你可以看到這些都是應該在我的形式,它具有所有的複選框被選中的3個類別。這是我卡住的地方。考慮到只有這三個類別需要檢查,那麼檢查這些複選框會是一個好方法嗎?
如果您需要更多關於該問題的詳細信息,請點擊評論。
感謝
編輯: 我做對SELECT語句中的print_r爲$stmt->fetchAll()
及以下是結果數組,我得到。我不知道該怎麼辦。我在這裏張貼,如果它可以是任何用途:
Array ([
0] => Array (
[cat_id] => 1 [0] => 1
)
[1] => Array (
[cat_id] => 2 [0] => 2
)
[2] => Array (
[cat_id] => 4 [0] => 4
)
)
你可以發表你的Ajax代碼?你得到JSON從Ajax請求的響應?還張貼在的console.log Ajax成功,而不是從PHP頁面的print_r。因爲這是你需要與 – guradio
一起工作的事情,我可以看到你正在發送html響應。你可以在第一時間加載完整的表單,當選擇一個產品時,只獲取複選框列表來檢查結果ajax.It會減小響應的大小。 – Deshan