2010-05-28 125 views
0

我會試着用一個例子來說明一下:如何在物品尚未創建時設置物品的ID ..?

想象一下將產品添加到數據庫(產品列表)的管理頁面。當我打開ADD ITEM頁面時,該項目還沒有創建(直到我點擊提交按鈕),但是讓我們說我想添加這個產品將出現的類別(例如使用AJAX)。當我運行AJAX腳本時,我需要告訴它哪個ID(我的產品)將這些類別放入...

我該怎麼做。

在頁面打開時,是否在數據庫中插入一個空白項目(以獲取mysql_insert_id)來完成此操作。它是否容易發生衝突或錯誤..?

恐怕這種技術將填充DB有很多空的產品,因爲管理員重新加載頁面,使頁面提交前,等...

你們怎麼辦呢?

+0

'我需要告訴它哪個ID(我的產品)把這些類別放在...'不,你不需要它。插入產品後只需添加類別。有什麼問題? – 2010-05-28 19:18:33

+0

任何需要知道數據庫中的id的用戶都是高級用戶,他們應該明白最好在插入後才能得到id。添加完成後,您可以隨意告訴他們:「對於您的記錄,使用id $ id添加的條目」 – corsiKa 2010-05-28 19:24:40

+0

我知道我可以將其作爲2個步驟進行操作(添加項目 - 然後重定向到添加類別頁面)。我只是儘量使用AJAX,當它是有道理的...我認爲添加隱藏的輸入可能是我最好的選擇... – pnichols 2010-05-28 19:26:36

回答

1

當您通過JS添加類別時,不要回發到php腳本,而是將表單元素添加到頁面的表單中。您可以添加名稱爲category_id[]的隱藏輸入元素。這樣,直到您實際提交項目表單之前,數據庫中沒有任何更改。然後,在項目控制器在PHP中,所有你需要做的是在添加項目後,添加類別...

1

我使用GUID作爲我的ID這樣的東西,你可以在任何系統上生成。 (但使用庫!)

+0

我也使用GUID,並且不需要將它們顯示給用戶 – 2010-05-28 19:20:39

+0

@Rob Goodwin我從來沒有真正地向他們展示唯一的ID,除非有必要。但是,我會爲它們提供一個僞代碼,用於查找速度等內容。但這只是一個可編入索引的字段。 – jcolebrand 2010-05-28 19:23:03

0

我會同意ircmaxell。在填寫所有表單元素之前,您不應該發佈到數據庫。您可以使用ajax或其他任何方法來更改顯示哪些表單元素,但是最好讓所有數據庫一次插入。

+0

我認爲這是無稽之談。如果數據庫插入是有意義的,那麼這樣做會很好,否則你會失去一些東西。但是,我並不反對儘可能有效地對呼叫進行分組。數據庫引擎比我們想象的要強大得多(確保它可能會超載,但是要將事情寫得和應該的一樣高效,並調整系統)。 – jcolebrand 2010-05-28 19:40:15

相關問題