好的,我很确定我不是第一个遇到这种情况的人,我只是不知道正确的词来搜索解决方案。 请考虑以下数据库表(针对此问题进行简化):
database tables http://www.nth-root.nl/public/images/wolf/cat_attr.png
如图所示,有一个包含产品类别的类别表和一个包含不同属性的属性表。例如:颜色(用于服装),容量(用于mp3播放器)等。
第三个表位于图片的中心,将属性链接到类别。
现在在后端我有一个“编辑类别”页面,其中包含用于编辑(或添加)类别的表单。在同一页面上,我想显示一个下拉列表列表,以便管理哪些属性链接到当前产品类别。
backend 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值与数据库中的值进行比较。
如果有人知道一篇解释最佳(也是最有效)解决方案的好文章,请告诉我,我将非常感激。
CNC中
我已经包含了一些图片以澄清我的问题,但是堆栈溢出拒绝包含它们因为我的声誉太低,所以我希望我的问题很清楚,没有图像。
-edit2- 现在我有足够的声誉,我已经添加了图片。
提前致谢,
尼克
答案 0 :(得分:2)
插入和更新
您可以插入带有ID记录的隐藏输入
新手将重置此ID,因此您可以执行插入操作
已填写的ID会进行更新。如果您只想执行更新,则确实更改了项目,您可以创建值为“0”的隐藏输入“UPDATED”。通过javascript,您可以检查组合是否已更改,以便输入标记为“1”。
<强>排除:强>
同样,您可以执行排除,创建隐藏的输入评分记录,当用户单击要删除时应删除这些记录。
不知道这是否适合您,或者您是否期望更实用的解决方案。