背景:
我正在创建一个销售书籍的三层电子商务网站。在我的网站中,我创建了一个表格(只有工作人员可以访问),允许工作人员向系统(数据库)添加新书。
目前我的数据库中有一个记录以下数据的表:
book_isdn // unique identifier of each book.
book_cat
book_title
book_author
etc..
除此之外,我还为图书类别创建了一个表,其中包含以下内容:
cat_id
cat_title
我在类别表中定义了以下行:
cat_id 1 = Business books
cat_id 2 = Computing books
cat_id 3 = Science books
cat_id 4 = History books
etc
问题:
在允许工作人员添加新书的形式中,我有一个列表:
<select multiple name="b_category" style = "width:150px" required>
<?php
$get_cats = "select * from categories";
$run_cats = mysqli_query($connect, $get_cats);
while ($row_cats = mysqli_fetch_array($run_cats)) {
$cat_id = $row_cats['cat_id'];
$cat_title = $row_cats['cat_title'];
echo "<option value='$cat_id'> $cat_title </option>";
}
?>
</select>
我想在“书籍”表中添加一本新书,其中包含该书所属类别的相应cat_id(即商业,计算等)。
然而,一本书也可以分为两类,即一本书可以同时属于商业和计算领域。
问题:
如何更改表单以便从中选择多个选项并将其添加到数据库以及cat_id?
例如:
如果使用表单我完成所有其他字段并从列表中选择计算和业务,我希望它在点击“添加新书”时,表单数据被发送到“书籍”表格,我将能够看到新书,在book_cat的领域下,我将看到1,2。
我完全难过了。有没有办法解决这个问题?我希望我已经很好地解释了这一点。
感谢。
答案 0 :(得分:1)
好的,让我们从你没有要求的东西开始。
a)数据库设计
请勿在{{1}}中存储1,2
的联合ID值。
这使查找和搜索变得困难,因为你需要获取&amp;每次分开。这可能只适用于非常小的系统。
您正在寻找的是从书籍到类别的关系表。
使用book_cat
和books_to_categories
将其命名为book_id
。
查询:cat_id
;
结果:数组一个或多个ID,然后通过SELECT cat_id FROM books_to_categories WHERE book_id = 2
表格解析cat_id
到它的名称(cat_title
)。
此处的关键字是数据库规范化。
b)公式
好的,你有一个下拉列表框,你可以在其中进行多项选择。 现在,这些选择的值需要转移到服务器端。 一个技巧是使用数组语法,而不是
category
只需使用
<select name="b_category" size=4 multiple>
并在服务器端<select name="b_category[]" size=4 multiple>
查看收到的值。然后简单地迭代数组的值并创建数据库条目。