2010-11-23 129 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()。

结果存储在数据库中,然后当它从数据库中拉出。

你有它。

相关问题