帮助DB更新功能

时间:2011-09-05 12:38:39

标签: php javascript jquery mysql codeigniter

我正在为客户端开发后端功能。他们希望能够通过一个非常基本的视图添加新记录和编辑旧记录;我慢慢地到了某个地方,但现在我被困住了。我担心我从一开始就没有想到我的方法。

这就是目前的情况:db update

“添加”字段集从未显示atm的按钮下滑出。它完全按照它的说法,向表中添加新记录。这很好用,我成功地使视图动态化(每个表的字段更改等),并且插入语句也可以正常工作。然而,问题在于编辑功能。

当我按下记录旁边的“编辑”按钮时,该行的值将在上面的表单中加载。然后,客户可以编辑值并提交它们。或者应该能够。

我被困在这里。大多数更新声明让我想要撞墙。如表所示,编写查询并不是很难:

$this->db->where('guestid' => $guestid)->update($table)

这里的主键是guestid。我应该使用此id来知道我想要更新哪一行。但是,目前,我没有办法告诉我的表格我要更新哪一行。我可以创建一个隐藏的输入字段并将ID放在那里..但是!对于不同的表,我使用此视图,就像我之前提到的那样。并非每个表都有guestid等。我当然可以编写一个巨大的switch语句或if-structure来确定哪个表以及哪个id应该进入隐藏字段,但我正在寻找一种更简单的方法。

这主要是让我感到头痛,因为有些桌子有一个组合PK(E.G:我的桌子event_pass的PK值为eventIDpassID)。我不确定如何将其链接到表单以及如何告诉我的应用程序“看看,使用此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..

这里有任何关于我思考过程的帮助。我不是在寻找完整的代码片段,只是一些想法,如何实现这一点的建议,让我的生活更轻松一点。我可以提供其他表格外观的更多屏幕截图,如果有必要,我当然可以提供代码。提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要通过SHOW INDEX FROM <table>查询从表中获取主键(请参阅this)并将主键数据发送到页面 - 正如您所建议的那样,隐藏输入可能就是这样要做到这一点,它肯定很好,很简单,应该完全按照你的期望在每个浏览器中完成。

然后您需要做的就是在提交请求时读取该数据并相应地为UPDATE查询构建where子句...