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

标签 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。

我完全被难住了。有什么办法可以解决这个问题吗?我希望我已经解释清楚了。

谢谢。

最佳答案

好的,让我们从您没有要求的事情开始。

a) 数据库设计

请不要存储像 1,2 这样的串联 ID 值在book_cat . 这使得查找和搜索变得困难,因为您需要每次都获取和拆分。这可能只适用于非常小的系统。

您要查找的是从书籍到类别的关系表。

这样命名books_to_categories , 与 book_idcat_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/

相关文章:

java - 如何使用数据库导航器插件 intelliJ 连接到 mysql 服务器

php - 用Mysql将相同的内容 "type"存储在一张表中

javascript - 通过 PHP 从 MySQL 中提取位置进行地理编码

php - 我想添加费用和余额记录并将其更新到其他列或同一余额列,但只有第一条记录受到影响

MySQL:InnoDB 表的自动增量备份

php - PDO 连接数据库错误

php - 自动完成功能的专业搜索查询细化

php - Laravel - Eloquent Update 1 比它说的要少?

PHP服务器和mysql表单

ios - 使用 Parse 和 Swift 对一个键的两个查询约束