从<option>中选择多个字段并将它们添加到数据库</option>

时间:2015-03-21 02:02:21

标签: php mysql database forms

背景:

我正在创建一个销售书籍的三层电子商务网站。在我的网站中,我创建了一个表格(只有工作人员可以访问),允许工作人员向系统(数据库)添加新书。

目前我的数据库中有一个记录以下数据的表:

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。

我完全难过了。有没有办法解决这个问题?我希望我已经很好地解释了这一点。

感谢。

1 个答案:

答案 0 :(得分:1)

好的,让我们从你没有要求的东西开始。

a)数据库设计

请勿在{{1​​}}中存储1,2的联合ID值。 这使查找和搜索变得困难,因为你需要获取&amp;每次分开。这可能只适用于非常小的系统。

您正在寻找的是从书籍到类别的关系表。

使用book_catbooks_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>查看收到的值。然后简单地迭代数组的值并创建数据库条目。