代码之家  ›  专栏  ›  技术社区  ›  Valentin Flachsel

使用复选框管理前端两个数据库表之间关系的有效方法?

  •  1
  • Valentin Flachsel  · 技术社区  · 15 年前

    快速背景信息:在与此问题相关的三个数据库表中,一个表保存设备信息( d.id , d.name )第二个则在第一个表中保存设备的附件。( a.id , a.name )第三个表处理前两个表之间的关系( D.I. , A.I. )

    通过从下拉框中选择一个可用设备,可以获得 全部的 正在显示附件,每个附件都有一个复选框,根据关系表中的数据选中或不选中。

    这就带来了我的问题:我不确定在提交表单后检查哪些复选框被更改的最有效方法是什么,也不确定查询数据库的最有效方法是什么,因为两者都是 INSERT S和 DELETE 对于同一个提交的表单可能需要s(即用户在提交前取消选中选中选中复选框并选中未选中的复选框——哇,该短语应该是一个措辞练习)。

    顺便说一下,我并不是特别想使用复选框,但我认为这是一个干净的方法来处理这个问题。任何建议和概念验证代码都将不胜感激!

    提前谢谢大家!

    2 回复  |  直到 15 年前
        1
  •  2
  •   bogatyrjov    15 年前

    如果您在复选框下面有一个“提交”按钮,只需将表单与post或get一起发送到服务器,无论您需要什么。

    如果要动态更改数据库,请使用Ajax和onclick复选框。(当用户取消选中时,将更改的复选框值(“false”)发送到PHP脚本,然后它将进行删除查询。如果复选框的值为“true”,它将启动一个插入查询)。

    对于Ajax发送,您可以使用jquery(最终会得到更少的代码)

        2
  •  2
  •   Jason McCreary    15 年前

    观察 REPLACE INTO 在产品和附件之间的桥接/连接台上。这是MySQL中使用不足的gem。

    否则,如你所说,你可以 DELETE 然后 INSERT 一切。但是如果你有任何额外的外国钥匙,这可能会变得混乱。然而,最终它似乎是最常见的方式,无论好坏。

    如果您有外键,则可以传递包含以前检查的附件ID的附加字段,并通过将它们与提交的表单数据进行比较来相应地处理这些附件。如果您的bridge表中有其他重要的事务数据,我建议您这样做。

    推荐文章