2010-11-23 130 views
6

我試圖將HTML存儲在數據庫中,因此當我從數據庫中檢索表單時,我需要將其顯示爲表單而不是文本。 有沒有辦法做到這一點?如何將html存儲在mysql數據庫中

這是形式

$form = "<form id='' method='' action='' class=''> 
    <input type='hidden' name='my-item-id' value= $uid /> 
    <input type='hidden' name='my-item-name' value=$title /> 
    <input type='hidden' name='my-item-price' value='1' /> 
    <input type='hidden' name='my-item-qty' value='1' /> 
    <input type='submit' name='my-add-button' class='button' value='Add to cart'/> 
    </form>"; 

的時刻,當我取回上述從它顯示爲文本數據庫,

也是在數據庫中的表單字段是varchar(1000)

include('adodb.inc.php'); 
include('adodb-pager.inc.php'); 
$sql = 'select title as "TITLE",description as "DESCRIPTION",form as "ADD TO CART" from mathspapers order by sysdate desc'; 
$pager = new ADODB_Pager($db,$sql); 

$pager->Render(); 

謝謝

+1

您應該包含用於從數據庫中讀取值並將其發送到客戶端的代碼。 – 2010-11-23 13:29:38

+0

請顯示您用於檢索代碼的代碼。另外,你的varchar字段的大小是多少? – 2010-11-23 13:31:34

回答

8

當您在數據庫中存儲文本時,您可能使用addslashes()
然後,當您從數據庫返回文本時,在顯示HTML文本之前,您需要類似stripslashes()之類的內容。 PHP Manual on stripslashes

0

我f我不得不猜測,我會說你的VARCHAR字段太小而不能佔用所有的HTML,所以標籤會被切斷,導致HTML被顯示爲文本。

0

我的猜測沒有任何支持證據是你將表單html轉換成他們的html安全等價物,因此它只是'輸出'作爲文本,它只是文本。

仔細檢查你的輸出,實際的源代碼是不是像&lt;爲<

1

代替存儲整個窗體模式(和值)在DB領域我可以告訴你只存儲表單字段名稱和數據(值)作爲鍵值對。

如果以標準方式存儲它們,您可以輕鬆使用它們; (在表單處理頁面使用)

$form_data = "my-item-id=".$_POST["my-item-id"]."&my-item-name=".$_POST["my-item-name"]."&my-item-price=".$_POST["my-item-price"]."&my-item-qty=".$_POST["my-item-qty"]; 

那麼只有在DB

$ form_data存儲(從數據庫中拉$ form_data後肯定)使用從數據庫數據,可以使用parse_str

parse_str($form_data,$form_data_from_db); 

echo $ form_data_from_db [「my-item-id」]將打印您的存儲表單輸入,例如

但這些不是我的主要建議。 如何爲每個存儲的數據字段構建模式? 只需構建一個像許多cms一樣創建窗體的函數。

試試這個;

function myform_pattern_1($id,$method,$action,$class,$form_data){ 

parse_str($form_data,$fd); 

$form_html = "<form id='' method='' action='' class=''>"; 
$form_html .= "<input type='hidden' name='my-item-id' value='".$fd["my-item-id"]."' />"; 
$form_html .= "<input type='hidden' name='my-item-name' value='".$fd["my-item-id"]."' />"; 
$form_html .= "<input type='hidden' name='my-item-price' value='".$fd["my-item-id"]."' />"; 
$form_html .= "<input type='hidden' name='my-item-qty' value='".$fd["my-item-id"]."' />"; 
$form_html .= "<input type='submit' name='my-add-button' class='button' value='Add to cart'/>"; 
$form_html .= "</form>"; 
return $form_html; 
} 

在你喜歡的地方調用這個函數;

echo myform_pattern_1("form_id","post","","form_class",$form_data); 

這個用法對您的方法有很大的好處。 您可以隨時更改表單語法。你可能會想要稍後集成一個Jquery驗證插件,或者只想使用另一個樣式,或者通過添加標籤來更改語法,如果將整個表單存儲在數據庫中,您將不得不更改所有存儲的數據庫字段。函數的用法是更不會使用flexible.Also數據庫,用於存儲多餘-repeating-標籤等

我希望你喜歡,半胱氨酸

有關parse_str更多信息; http://php.net/manual/en/function.parse-str.phpenter code here

0

從用htmlspecialchars的PHP文檔: 某些字符在HTML中具有特殊的意義做出 翻譯是日常的網絡編程的最有用的。如果您需要翻譯所有HTML字符實體,請改用htmlentities()。

結果存儲在數據庫中,然後當它從數據庫中拉出。

你有它。

相關問題