好的,我相信我不是第一个遇到这个问题的人,只是不知道用什么词语来搜索解决方案。
考虑以下数据库表(简化为此问题):
数据库表 http://www.nth-root.nl/public/images/wolf/cat_attr.png
正如您在图片中所看到的那样,有一个类别表,保存产品类别和一个属性表,保存不同的属性。例如:颜色(用于服装),容量(用于mp3播放器)等。
图片中间的第三个表将属性链接到类别上。
现在,在后端,我有一个“编辑类别”页面,其中包含一个表单以编辑(或添加)类别。在同一页中,我想显示一个下拉列表的列表,以管理哪些属性链接到当前产品类别。
后端 http://www.nth-root.nl/public/images/wolf-commerce/edit_category.png
它使用jquery来添加/删除下拉列表。
问题是:如何使用表单的$_POST数据操作category_attribute表中的数据。懒惰的解决方案是(我以前做过这个):
1. 删除给定类别的category_attribute中的所有当前行
2. 然后将所有选定的属性插入到category_attribute中
但这并不是很高效,即使有人只更改了类别的标题,它也会删除并重新添加所有行。
因此,我正在寻找一种正确的插入、更新和删除方式:
1. 删除在$_POST中未出现的行(下拉列表已被移除)
2. 更新已更改的行(从下拉列表选择了另一个选项)
3. 插入新的行(添加了新的下拉列表)
我只是不确定如何做或在哪里找到一个好的例子。它可能很容易用一些ajax来完成,但我正在寻找的是一个纯php的解决方案,将$_POST值与数据库中的值进行比较。
如果有人知道一篇好的文章,解释最好(也最有效)的解决方案,请告诉我,我将非常感激。
-编辑-
我添加了一些图片来澄清我的问题,但是因为我的声望太低,stackoverflow拒绝包含它们,所以我希望我的问题足够清晰,没有图片也可以。
-编辑2- 现在我有足够的声望,我已经添加了这些图片。
提前感谢您的帮助,
Nic
<select>
元素,而不是操作数据库。 - Nic Wortel