2016-01-09 50 views
3

我有一個<table>根據通過$_GET變量獲得的用戶選擇獲取數據更新。以下兩個選項中的哪一個可以更好地將數據加載到<table>在動態更新的頁面上包含HTML的更好方法:php include()或MySQL數據庫?

1)PHP include()會是這樣的......

<?php 
$problem_id = (int)$_GET['problem_id']; 
$table .= '<table>'; 
include('path/to/file/' . $problem_id . '.php'); //$problem_id.php would contain the <tr>'s and <td>'s that go in the <table>. 
$table.= '</table>'; 

echo $table; 
?> 

2)使用MySQL數據庫會是這樣的......

<?php 
$problem_id = (int)$_GET['problem_id']; 

/* 
Go to DB and get the entry which contains <tr>'s and <td>'s that 
go in the <table> and put it into the variable $table_content. 
*/ 

$table = '<table>' . $table_content . '</table>'; 

echo $table; 
?> 

是否有一個明顯的選擇在這裏?兩種方法的優缺點?

謝謝。

+0

取決於,你沒有理由不能同時使用兩者。您的數據是位於文件還是數據庫中?我的假設是某種數據庫。代替存儲表結構(_ s和​​s_),您可以使用php [Query](http://php.net/manual/en/pdo.query.php)命令從數據庫中檢索數據並使用結果數組填充表格數組。 – hoss

+0

@hoss:實際上,「數據」是

標籤( s,​​,文本,圖像,格式化的HTML,內聯CSS等)中的所有HTML。目前它使用「longtext」作爲列結構存儲在MySQL中。我正處於這個項目的開始階段,因此我有機會在相對較少的工作中做出改變。 – gtilflm

+0

$ problem_id是否固定在數字中?或者它是否會改變?如果它修復了多少?是否還有基於$ problem_id的更新刪除方案? –

回答

0

我要說的是,主要取決於文本有多大,和你有多少將會有。

  • 如果你想有大的,複雜的頁面幾十(或幾百個,甚至上千個),有很多的內容 - 也許include()是要走的路。您也可以直接在文件系統上編輯它們。

  • 如果你將有數以千計的(或更多)更簡單的頁面,那麼使用數據庫可能會更有效。如果你想索引和搜索它們,這也是一個好主意。

一個相當任意的閾值,每個文件會佔用最小爲4 KB,因此,如果他們有較少的內容比你可能跟他們浪費空間。

在這兩種情況下,您都會希望爲濫用內容的人提供濫用保護。

  • 文件系統爲基礎的是可能受到我發送的形式problem_id=../../../passwords.php的查詢,以及爲有你的文件系統被吃掉,如果人們能產生問題本身。
  • 基於數據庫的操作可能容易受到SQL注入等影響,但現有解決方案可能存在更多問題。

最後,有文件系統,在那裏,被實現爲數據庫,和數據庫被實現爲文件系統。他們並非完全不同;他們只針對不同的事情進行了優化。

+0

我肯定會得到數千個可能在2-10kb範圍內的「條目」。至於保護,我將是唯一一個創建文件,所以這裏沒有問題。在這種情況下,這聽起來像數據庫路線唯一可觀的優勢是搜索。這聽起來是對的嗎? – gtilflm

0

你必須做出決定取決於每個選項goodbad雙方

DB選項

好的一面 - 如果你正在使用的版本控制(EG git),你必須給能力administrators修改html模板admin panel那麼最好的選擇是你DB因爲在的情況下文件存儲文件,如果通過admin panel修改於服務器和git在同一時間,那麼你將有服務器更新期間

好壞兩面衝突 - 1)你必須做更多的操作把它從數據庫和然後顯示文件的情況。 2)當你的模板存儲在數據庫就會對數據庫的額外負載,以後如果有性能優化問題,你將實現文件高速緩存

文件選項

好的一面 - 1)它開發人員可以輕鬆修改其IDE editors (E.G. eclipse)上的html模板,然後在數據庫或管理面板中對其進行修改。 2)文件包含匹配速度更快,需要較少的代碼操作,然後DB(通常如果您沒有特定的情況)。 3)你沒有必要實現文件高速緩存,因爲它已經存儲在文件中

好壞兩面 - 1)正如我上面提到你將有git問題,如果你在同一時間

-1
修改模板 admingit

MySQL是我明顯的選擇。動態地包含一堆PHP文檔會混亂你的服務器。問題是你真的想要輸入或生成新的表格數據嗎?您可以將它全部動態創建,然後插入到數據庫中。

0

如果是動態內容,您的最佳選擇是HTML5 + jQuery-Ajax + PHP + Db的組合。

在你的HTML頁面,您可以有這樣的代碼:

<table> 
    <!-- table head --> 
    <thead> 
     <tr> 
      <th>Col #1</th> 
      <th>Col #2</th> 
      <th>Col #3</th> 
     </tr> 
    </thead> 
    <!-- result set --> 
    <tbody id="results"> 
    </tbody> 
</table> 

你用「jQuery的Ajax」的異步請求服務器數據和填充空表(#results在這個例子中)。此應用程序是連接到數據庫(可以是任何數據庫引擎或MySQL數據庫)的文件「PHP」。

相關問題