草庐IT

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

coder 2024-04-07 原文

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

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

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

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

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

提前致谢

尼克

最佳答案

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

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

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

关于php - 将 $_POST 数组与数据库进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13240473/

有关php - 将 $_POST 数组与数据库进行比较的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  3. ruby-on-rails - 在 Ruby 中循环遍历多个数组 - 2

    我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 多次弹出/移动 ruby​​ 数组 - 2

    我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby​​数组,我们在StackOverflow上找到一

  6. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  7. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  8. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  9. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  10. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

随机推荐