背景:
我正在创建一个销售书籍的三层电子商务网站。在我的网站中,我创建了一个表格(只有工作人员可以访问),允许工作人员向系统(数据库)添加一本新书。
目前我的数据库中有一个表记录了以下数据:
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。
我完全被难住了。有什么办法可以解决这个问题吗?我希望我已经解释清楚了。
谢谢。
最佳答案
好的,让我们从您没有要求的事情开始。
a) 数据库设计
请不要存储像 1,2
这样的串联 ID 值在book_cat
.
这使得查找和搜索变得困难,因为您需要每次都获取和拆分。这可能只适用于非常小的系统。
您要查找的是从书籍到类别的关系表。
这样命名books_to_categories
, 与 book_id
和 cat_id
.
查询:SELECT cat_id FROM books_to_categories WHERE book_id = 2
;
结果:排列一个或多个id,然后解析cat_id
它的名字( cat_title
)通过 category
表。
这里的关键词是数据库规范化。
b) 公式
好的,您有一个下拉列表框,您可以在其中进行多项选择。 现在,这些选择的值需要传输到服务器端。 一个技巧是使用数组语法,而不是
<select name="b_category" size=4 multiple>
就用
<select name="b_category[]" size=4 multiple>
在服务器端var_dump($_POST['b_category']);
查看收到的值。然后简单地遍历数组的值并创建数据库条目。
关于php - 从 <option> 中选择多个字段并将它们添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29178441/