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

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值与数据库中的值进行比较。
如果有人知道一篇好的文章,解释最好(也最有效)的解决方案,请告诉我,我将非常感激。

-编辑-
我添加了一些图片来澄清我的问题,但是因为我的声望太低,stackoverflow拒绝包含它们,所以我希望我的问题足够清晰,没有图片也可以。

-编辑2- 现在我有足够的声望,我已经添加了这些图片。

提前感谢您的帮助,

Nic


1
一些可能会在您的Google搜索过程中错过的词汇:http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model - ficuscr
1
此外,您的category_attribute表被称为join/junction/many-to-many/pivot表,详见http://en.wikipedia.org/wiki/Junction_table。 - Mike B
你是通过 JavaScript 插入新的项目吗? - Fred Wuerges
假设除了EAV之外,还应该提到CCK(内容创建工具包)。只要知道这些词,你就可以通过搜索找到很多信息。优缺点等。 - ficuscr
1
感谢所有的回复。我正在寻找连接表,但目前还没有有用的结果。 @FredWuerges,我现在有足够的声望来包含图片了,它们回答了你的问题吗?正如你所看到的,我使用jquery在客户端添加/删除html <select>元素,而不是操作数据库。 - Nic Wortel
1个回答

2

插入和更新:
您可以插入一个带有ID为records的隐藏输入框。
那些新的将重置此ID,因此您可以进行插入操作。
填充了ID的记录则进行更新。如果您只想更新实际更改了的项目,则可以创建一个名为“UPDATED”的隐藏输入框,其值为“0”。通过javascript,您可以检查组合框是否已更改,以便将该输入标记为“1”。

排除:
同样,您可以进行排除操作,创建一个带有得分记录的隐藏输入框,当用户单击删除时,应删除该记录。

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


谢谢!这肯定会让我开始了。 - Nic Wortel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接