我正在尝试将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();
由于
答案 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;
的<
不同
答案 4 :(得分:0)
来自htmlspecialchars的PHP文档: 某些字符在HTML中具有特殊意义 翻译是对日常网络编程最有用的翻译。如果您需要翻译所有HTML字符实体,请改用htmlentities()。
结果存储在数据库中,然后存储在数据库中。
你拥有它。