依赖N级下拉列表

时间:2019-02-25 02:50:29

标签: php dropdown

PHP中的新手,确实搜索了很多内容,却找不到相关的链接来帮助我编写代码。在相关的下拉菜单中看到了很多帖子,例如国家/州/城市,或显示了多个下拉值...

我的想法类似于购物车系统,但不是购物车,只需客户填写表格,以使网站所有者知道他感兴趣的产品,以获取更多信息。

在选择第一个主下拉菜单(如类别)时, 它将弹出相关的子类别,直到子类别没有更多的子类别,而相关的最后一个子类别将显示相关的产品。因此,这不是预定义的选项/选择,因为网站所有者可能只是从3个级别的子类别开始,和/或以后根据需要添加多达7个或更多级别的子类别。

没有在Google搜索和找到的脚本中允许通过下拉列表进行多项选择,但是最好只从一个下拉菜单中进行选择,如果用户希望拥有新的类别和/或新的子菜单,则不可行类别,因此需要下拉列表中的选项,以便用户选择OPTION1:完成添加产品或OPTION2:继续添加更多新的类别/产品。

下拉列表中的所有值都必须能够通过表单操作显示和检索数据库。提到的脚本版本很少,实现我的想法的最好的是什么?杰森?


数据库表包括:

客户/类别/产品/类别产品


表格:

让客户输入基本客户详细信息, 选择并提交感兴趣的类别和产品


动作(3):

提交表单以将其保存到数据库, 在屏幕上显示客户选择的产品,以及 通过电子邮件将表单结果发送给网站所有者和客户。 非常感谢!

1 个答案:

答案 0 :(得分:0)

在我看来,您要问的对Stackoverflow来说什么都不是。我尝试为您提供示例,但这需要很长时间(现在已经超过一个小时)。到目前为止,我的总体想法是:

创建一个model类来处理数据库连接。保存已经回答的类别。然后询问model是否还有更多类别可供选择。例如,您有类别

$categories = array(
    'Intel' => array(
        'i7',
        'i9'
    ),
    'AMD' => array(
        'Ryzen',
        'Athlon'
    )
);

用户从第一个固定的问题开始。

<legend for='0'>Which brand do you want?</legend>
<select id='0'>
    <option value='1'>Intel</option>
    <option value='2'>AMD</option>
</select>

您的数据库然后包含表categories [id, name, parent]。第一类是假人。该表可能如下所示:

+---+--------+------+
| 0 | NULL   | NULL |
| 1 | Intel  | 0    |
| 2 | AMD    | 0    |
| 3 | i7     | 1    |
| 4 | i9     | 1    |
| 5 | Ryzen  | 2    |
| 6 | Athlon | 2    |
+---+--------+------+

默认情况下,您将id = 0用作“选定”。子类别,将显示以当前类别(0)为父类别的类别。

每当用户选择一个选择框时,您便具有选定的ID。通过使用此ID,您可以遍历表(使用效率低的php循环)并存储所有父ID(因此,父,祖父母,祖父母,...),直到父{ {1}}。家长ID以及您选择的答案将为您提供当前类别的“路径”。您知道所有先前选择的类别。

您的产品表可能看起来像0

每当用户更改类别时,您都必须选择并显示所有类别,这些类别已将用户选择一个类别作为其父类别。另外,您将必须显示具有给定product[id, category_id, name, ...](用户选择了第一个)的所有产品。

然后,您可以将产品ID保存到category_id表中。该表包含客户购买的所有商品。

我会通过使用html中的模板来做到这一点。这将显示先前选择的类别。然后可以使用此模板解析类别以显示给用户。另外,我将使用ajax请求来加快页面速度并防止一次又一次地加载所有内容。