2011-09-20 59 views
0

我剛開始創建我的第一個網站,它由數據庫支持(這也是我的第一個數據庫)。由於我的經驗不足,我不知道我是否應該依靠jQuery或PHP來完成特定的任務,並且希望有人能夠提供一些見解。 (這是'最佳實踐'問題。)使用jQuery和PHP過濾數據庫結果

在表格「文件」中,有6個字段和大約50行。用戶會在表格中顯示所有信息,並且可以應用過濾器(通過複選框)來操作數據的顯示方式。例如,如果盒類別= DNA關鍵字=測定被檢查,PHP腳本選擇在db那些行,其中字段類別關鍵字具有值DNA測定中,分別。然後將這些信息作爲JSON對象返回給jQuery腳本,用於格式化和插入到DOM中(我使用$ .getJSON)。

到目前爲止,這工作得很好。然而,在閱讀了對db的「太多」查詢後,性能會受到影響,我寫了一個新的jQuery腳本,在文檔加載後立即從表「文件」中獲取所有信息。該信息被分配到6個不同的陣列(即類別[]關鍵字[],給定行的索引在所有6個陣列中相同)。然後,如果應用上述相同的過濾器,我搜索類別[]關鍵字[]數組。如果字符串DNA測定類別中發現顯示與索引相關聯的信息[I]關鍵字[I]

很明顯,第二種方法減少了對db的查詢次數。然而,對我來說,這感覺是'錯誤的',因爲我正在使用jQuery來處理不完全'行爲'的東西,並且我懷疑jQuery在搜索數組時與MySQL在查找表中的行一樣快。測試這兩個版本的網站,他們似乎表現同樣好,但我只能在本地測試網站。我想如果表格變得非常大,jQuery版本將變得不太可行,但它不可能超過100行。

如果您有任何建議,我將非常感謝任何幫助,以決定我應該實施哪個選項。預先感謝您的意見,我希望您能接受我的道歉,成爲這樣一個新手!

回答

0

您必須在AJAX版本中針對客戶端操作權衡來回調用您的服務器。雖然你的內部散列方法(帶有共享鍵的多個數組)沒有什麼問題,但很可能你可以根據類來過濾行並使用jQuery來顯示/隱藏它們。

<li class="dna assay">blah...</li> 

和其他地方...

$('#dnacheckbox').click(function(){ $('.dna').toggle() }); 

就個人而言,我沒有看到你正在使用jQuery做的事情不是行爲 - 排序和過濾是典型的用戶交互。

如果你可以有把握地說,行數將保持在幾百,我建議客戶端選項是要去的。它肯定會讓最終用戶感覺更加快樂。

我不知道你究竟是如何展示你的數據,但是看看DataTables你的建議做過多的車輪R & D.

+0

哇感謝之前!切換的想法很好。 – Nathan

+0

樂於助人。如果它解決了您的問題,請記得勾選答案和/或上傳。這就是這個網站的工作原理。 – RET

1

有6個字段和大約50行,你可以做任何你想做的 - 用jQuery或PHP或PHP和jQuery。完全沒有區別。