2012-07-17 28 views
0

我正在使用Codeigniter中的CMS,它具有標題,帖子內容等常用字段(頁面與此類似,Wordpress)。當ID尚未知道時保存到表格

我在頁面上有一個圖像上傳器,通過ajax將圖像保存到帶有諸如image_id,路徑,大小等基本字段的MySQL表中。

還有另一張表,用於存儲項目與需要item_id和image_id兩者的圖像之間的關係。

我遇到的問題是item_id在創建/保存頁面之前是未知的。因此,如果用戶轉到「創建帖子」頁面並從那裏上傳圖片,我無法添加關係,因爲我還沒有item_id。

有些事情我考慮:

  • 每當有人去創建頁面後,它會自動創建一個空白後在MySQL表只是ITEM_ID並將其存儲在一個隱藏字段。我有這個問題的是,如果一個人只是點擊了創建貼,但是從來沒有填充它,數據庫可能會充滿大量的空白帖子。

  • 將圖像保存在圖像表中,但也保存了單擊「創建」按鈕時所有ID的數組。點擊該按鈕後,添加圖像關係。

  • 隱藏的圖片上傳到帖子標題填寫,這將觸發頁面

WordPress的似乎已經解決了這一點,但我不知道它做什麼?

任何人有更好的建議嗎?

+1

爲什麼不只是將圖像存儲爲臨時文件,並且在處理完信用卡之後完成所有數據庫工作? – Julien 2012-07-17 15:18:36

+0

什麼信用卡 – allen213 2012-07-17 15:33:29

回答

2

我要說構建您的圖像表,以便它不」不需要參考特定的帖子。將圖像 - 張貼關係放入單獨的表格中。在您的「撰寫文章」屏幕上,讓圖片上傳者返回新插入圖片的ID,並且當您提交帖子時,將新帖子ID和圖片ID添加到圖像 - 發佈關係表中。這也爲您提供了更多的靈活性,例如鏈接多個帖子中的一個圖像。

- 編輯:重新閱讀時,它聽起來像這已經是你如何存儲它們。如果是這樣,那就不應該有問題。只需在提交帖子時添加圖像 - 帖子關係即可。如果您擔心孤立的圖像,請參閱下文。 -

如果有人上傳圖像,然後關閉窗口而不發佈帖子,那麼這可能會導致孤兒圖像,這是正確的。儘管如此,我不擔心圖像表「填滿」。 MySQL表格可以有數百萬行,並且表現良好。

如果您擔心收集未使用的圖像文件,那麼您可以定期執行維護作業,以便在上傳日期早於1周以及圖像不正確的情況下刪除圖像文件(以及相關的表格條目)與任何帖子無關。

+0

所以在圖像上傳到圖像表後,返回所有的image_id並將它們存儲在隱藏的字段或其他東西? – Motive 2012-07-17 15:49:03

+0

是的,這將工作。 – octern 2012-07-17 15:51:31

+0

另外一個建議是創建一個cron任務,以及一個CLI唯一控制器,用於在'圖表'中將所有孤立圖像拉出來,而'關係表'中沒有行。那麼你可以相應地清理你的文件系統和圖像表。 – gorelative 2012-07-17 16:57:08

1

似乎很簡單:

使用1種形式

收集發佈

插入文章中的數據 - 插入記錄ID

插入圖片 - 記錄圖像ID

使用編號來插入關係表

編輯

當你正在使用AJAX上傳的圖片,你可以使用一個返回值插入的圖片ID加載到一個隱藏的表單字段

+1

我認爲,在這種情況下,圖像上傳前完成後。就像,你正在寫一篇文章,而在中間你使用ajax「上傳圖片」功能來上傳圖片,即使該帖子還沒有提交。 – octern 2012-07-17 15:38:43

+0

@octern是的,這就是發生了什麼,我遇到了什麼麻煩。這個答案似乎沒有回答我的問題。 – Motive 2012-07-17 15:40:05