如何在mysql数据库中存储html

时间:2010-11-23 13:27:18

标签: php mysql html

我正在尝试将HTML存储在数据库中,因此当我从数据库中检索表单时,我需要将其显示为表单而不是文本。 有办法吗?

这是表格

$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();

由于

5 个答案:

答案 0 :(得分:8)

当您在数据库中存储文本时,您可能使用addslashes() 然后,当您从数据库返回文本时,在显示HTML文本之前需要stripslashes()之类的内容。 PHP Manual on stripslashes

答案 1 :(得分: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

使用db中的数据(肯定是从db中提取$ 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验证插件,或者只想使用其他样式甚至更改语法,如果将整个表单存储在db,则必须添加标记以更改所有存储的db字段。函数用法更加灵活。您也不会使用db来存储不必要的重复标记等。

我希望你喜欢,cys

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

答案 2 :(得分:0)

如果我不得不猜测,我会说你的VARCHAR字段太小而无法占用所有HTML,因此标记会在某处被截断,从而导致HTML显示为文本。

答案 3 :(得分:0)

我的猜测没有任何更多的支持证据是你将表单html转换为他们的html安全等价物,因此它只是'输出'作为文本,它只是文本。

仔细检查您的输出,实际源代码与&lt;

&lt;不同

答案 4 :(得分:0)

来自htmlspecialchars的PHP文档: 某些字符在HTML中具有特殊意义 翻译是对日常网络编程最有用的翻译。如果您需要翻译所有HTML字符实体,请改用htmlentities()。

结果存储在数据库中,然后存储在数据库中。

你拥有它。