我正在为客户端开发后端功能。他们希望能够通过一个非常基本的视图添加新记录和编辑旧记录;我慢慢地到了某个地方,但现在我被困住了。我担心我从一开始就没有想到我的方法。
这就是目前的情况:
“添加”字段集从未显示atm的按钮下滑出。它完全按照它的说法,向表中添加新记录。这很好用,我成功地使视图动态化(每个表的字段更改等),并且插入语句也可以正常工作。然而,问题在于编辑功能。
当我按下记录旁边的“编辑”按钮时,该行的值将在上面的表单中加载。然后,客户可以编辑值并提交它们。或者应该能够。
我被困在这里。大多数更新声明让我想要撞墙。如表所示,编写查询并不是很难:
$this->db->where('guestid' => $guestid)->update($table)
这里的主键是guestid
。我应该使用此id来知道我想要更新哪一行。但是,目前,我没有办法告诉我的表格我要更新哪一行。我可以创建一个隐藏的输入字段并将ID放在那里..但是!对于不同的表,我使用此视图,就像我之前提到的那样。并非每个表都有guestid等。我当然可以编写一个巨大的switch语句或if-structure来确定哪个表以及哪个id应该进入隐藏字段,但我正在寻找一种更简单的方法。
这主要是让我感到头痛,因为有些桌子有一个组合PK(E.G:我的桌子event_pass
的PK值为eventID
和passID
)。我不确定如何将其链接到表单以及如何告诉我的应用程序“看看,使用此PK在此行上更新这些值”。
我将所有表元数据都放在一个数组中,所以我知道PK等:
[eventID] => Array
(
[Field] => eventID
[Type] => int(10) unsigned
[Null] => NO
[Key] => PRI
[Default] =>
[Extra] =>
)
[passID] => Array
(
[Field] => passID
[Type] => int(10) unsigned
[Null] => NO
[Key] => PRI
[Default] =>
[Extra] =>
)
etc..
这里有任何关于我思考过程的帮助。我不是在寻找完整的代码片段,只是一些想法,如何实现这一点的建议,让我的生活更轻松一点。我可以提供其他表格外观的更多屏幕截图,如果有必要,我当然可以提供代码。提前致谢。
答案 0 :(得分:0)
您需要通过SHOW INDEX FROM <table>
查询从表中获取主键(请参阅this)并将主键数据发送到页面 - 正如您所建议的那样,隐藏输入可能就是这样要做到这一点,它肯定很好,很简单,应该完全按照你的期望在每个浏览器中完成。
然后您需要做的就是在提交请求时读取该数据并相应地为UPDATE
查询构建where子句...