2009-06-02 58 views
1

我有一個多頁表單,它使用mysql中的多個表作爲輸入值。其中一個頁面有一個表單,如果用戶希望包含額外信息,則需要選擇讓用戶單擊+來添加額外的行。可以添加任意數量的行。jquery-> php-> mysql和動態表單域

當用戶點擊+時,jquery和php將當前用戶標識插入數據庫表中的一行,然後在輸入更多信息時更新。

我得到的問題是如何爲該特定ID插入任意數量的行 - 輸入數據時,模糊事件將數據發送到用於更新數據庫的php代碼。但是,我遇到的問題是它將更新所有具有該特定用戶標識的行而不是當前行。

將新數據輸入到數據庫並更新數據庫的最佳方式是什麼?我假設我將不得不使用ID值而不是userid值,因爲這將是唯一的,或者有其他方法做到這一點?

感謝你可以給任何建議,這個人是混濁目前我的腦海裏......

回答

1

嗯,我認爲你需要使用一對標識符,你的用戶ID和字段ID。 僅編輯filedid就足夠了,但是當您需要列出所有用戶字段時,則需要其他引用。

1

當你的狀態,你應該使用你正在更新的表的主鍵,而不是國外你是正確的鍵(在你的情況下UserId)在桌子上多次出現。這保證你會更新你所期望的行。

另一種方法是縮小更新的行數 - 例如,只更新最近的/最高的ID或使用使記錄唯一的字段組合。但是,使用主鍵是解決問題的最佳方法。

1

是的,你需要你插入的行的ID值,而不僅僅是用戶ID。我推測你想要做的就是從你的Ajax腳本中傳回mysql LAST_INSERT_ID(),該腳本在你點擊+時進行插入操作,並將該ID插入稍後用於更新行的信息中。

+0

將LAST_INSERT_ID()發送回主窗體的最佳方式是什麼? $ _SESSION會成爲解決方案嗎? – Choog 2009-06-02 14:34:24

+0

我的想法是,您將從腳本中將其作爲JSON或XML傳回。 – chaos 2009-06-02 15:12:25

1

是的,你最好的辦法是讓mysql爲每一行創建返回一個唯一的ID,然後只要確保在你的表單上編輯一行時發送id。現在,您可以一次編輯一行。