将$ _POST数组与数据库进行比较

Nic*_*tel 5 php database post

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

数据库表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.删除给定类别
2的category_attribute中的所有当前行.然后将所有选定的属性插入category_attribute

但这并不是非常有效,即使有人只更改了类别的标题,它也会删除并重新添加所有行.

所以我正在寻找一种方法来进行正确的插入,更新和删除:
1.删除$ _POST中没有出现的行(已删除下拉列表)
2.更新已更改的行(另一个选项来自已选择下拉列表)
3.插入新的行(已添加新的下拉列表)

我只是不知道该怎么做或在哪里找到一个好例子.使用某些ajax可能很容易,但我正在寻找一个纯粹的php解决方案,将$ _POST值与数据库中的值进行比较.

如果有人知道一篇解释最佳(也是最有效)解决方案的好文章,请告诉我,我将非常感激.

-edit-
我已经包含了一些图片来澄清我的问题,但是堆栈溢出拒绝包含它们因为我的声誉太低,所以我希望我的问题很清楚,没有图像.

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

提前致谢,

尼克

Fre*_*ges 2

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

排除:
同样,您可以执行排除操作,创建隐藏的输入评分记录,当用户单击“删除”时应将其删除。

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