5

好的,我很确定我不是第一个遇到这种情况的人,我只是不知道寻找解决方案的正确词。考虑以下数据库表(针对此问题进行了简化):

数据库表 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 值与数据库中的值进行比较。

如果有人知道一篇解释最佳(和最有效)解决方案的好文章,请告诉我,我将不胜感激。

-edit-
我已经包含了一些图片来澄清我的问题,但是由于我的声誉太低,堆栈溢出拒绝包含它们,所以我希望我的问题在没有图片的情况下足够清楚。

-edit2- 现在我有足够的声誉,我已经添加了图像。

提前致谢,

网卡

4

1 回答 1

2

插入和更新:
您可以插入带有 ID 记录的隐藏输入。
那些新人将重置此 ID,因此您进行插入。
已填写您的 ID 进行更新。如果您只想执行更新真的改变了项目,您可以创建一个隐藏输入“UPDATED”,值为“0”。通过javascript,您可以检查组合是否已更改,以便将输入标记为“1”。

排除:
同样你可以做排除,创建一个隐藏的输入评分记录,当用户点击删除时应该删除。

不知道这是否适合您,或者您是否期望更实际的解决方案。

于 2012-11-05T21:50:31.737 回答