2010-06-15 99 views
4

我有一個應用程序,動態地修改表,想想電子表格),然後在保存表格(這是表格的一部分),我存儲了改變的表格(用戶修改)在一個名爲html_Spreadhseet的數據庫列中,以及其餘的表單數據。現在我只是存儲在純文本格式的HTML與基本轉義的字符...最佳實踐如何在數據庫列中存儲HTML

我知道這可以存儲爲一個單獨的文件,源表(html_workseeet)已經是。但是從數據處理的角度來看,更容易將更改的html表保存到列中或從列中保存,以避免必須提出文件管理策略(該文件夾將存在於此目錄中,現在必須包括備份中的文件夾,現在的安全問題需要應用於文件,如何同步數據庫安全性與文件系統等),所以爲了最大限度地減少這些問題,我只將......部分存儲在數據庫列中。

我的問題是我應該gzip的HTML,也許使用JSON或其他格式輕鬆存儲和從數據庫列中檢索HTML,什麼是存儲在數據庫中的HTML內容的最佳做法?或者只是將它存儲爲我目前作爲轉義文本列?

回答

0

這取決於HTML的大小。壓縮後可以將它存儲爲二進制BLOB。大多數情況下,最好是在轉義可能導致問題的SQL字符後直接存儲數據。
正如很多時候問你爲什麼要存儲視圖而不是模型?

+0

這個HTML看起來像這樣。 <表類= '電子表格' 邊界= '1' 的id = 'myTable的'> ​​材料 0 ​​稅 ​​0.00 ​​GBP 0。66 它不是傳統意義上的純粹的看法,這裏的目標是保存用戶輸入的數據。更像谷歌文檔(電子表格)從這張表中抽象出來的數據會增加它的複雜性和應用程序的冗長性,因爲這些單元格的映射在語法上是以運行時間方式完成的。 – user299319 2010-06-15 18:15:27

0

您可能應該找到子彈並解析表格(也許使用HTML解析器),否則可能會導致用戶在表格數據中存儲破壞性JavaScript。 (這意味着單元格內容也應該被解析)。數據仍然可以存儲爲blob(可能是壓縮的CSV或JSON),但您需要確保它不會造成損害。

1

如果你要做的是保存用於重新顯示的HTML,保存它是什麼錯誤,然後通過存儲過程檢索它,並在需要時重新顯示它?假設你有一個HTML頁面,它可以從列表中選擇某種類型的ID,可以在ThickBox頁面上,也可以從選擇選項中選擇。

通常對於這種情況,您可能會通過$ Ajax或許JSon查詢數據庫。

然後發送回$ Ajax調用的結果將是您的結果數據。

然後,您用Data SpreadSheet替換保存SpreadSheet的Div。

因此,在回答您的原始問題時,您可以將SpreadSheet存儲爲某種類型的ID,並將其存儲爲Div的HTML。

檢索時,您只需將Div HTML替換爲存儲的內容即可。