我正在创建一个用户可以在其中创建表的页面。它们可以添加行、数据和样式。每当用户添加行或数据时,它都会附加到页面
上显示的原始空白HTML表元素上<table class='preview_table' id='preview' name='preview'>
<!-- this is the space where entered info forms a table -->
<thead></thead>
<tbody></tbody>
</table>
作为预览。然后,用户可以设置预览的样式,并且样式也会添加到表及其子元素中。
我希望能够采取结果的HTML代码,并将其放入数据库中,最好使用PHP,当用户点击保存按钮。这是我的PHP代码:
if(isset($_POST['submitted'])){
$prob = false;
if(!empty($_POST['title']) && !empty($_POST['type']) && !empty($_POST['name'])){
$new_title = mysql_real_escape_string(trim($_POST['title']));
$new_type = mysql_real_escape_string(trim($_POST['type']));
$new_name = mysql_real_escape_string(trim($_POST['name']));
$new_table = '' ;
$new_id = $id;
}else{
echo '<p style="background-color:red;font-size:20px;">Enter values for all fields</p>';
$prob = true;
}
if(!$prob){
$q = "INSERT INTO tables (id , active , type , name , title , html_code) VALUES ('$new_id' , 'Y' , '$new_type' , '$new_name' , '$new_title' , '$new_table')";
if(@mysql_query($q)){
echo '<p style="background-color:green;font-size:20px;">Success!</p>';
}else{
echo '<p>'.mysql_error().'</p>';
}
}
}
我想将表的HTML代码设置为变量$new_table。到目前为止,我试过
$new_table = $_POST['preview'];
但我现在明白为什么这不起作用了。我还尝试使用ob_start和ob_get_contents,但这也不起作用。我对PHP相当陌生,所以可能有一些相当简单的东西我遗漏了。因此,我的问题是:如何使用PHP将动态创建的元素的HTML存储到数据库中?
任何和所有的帮助是非常感谢!谢谢你。
name=table
必须是像<input>
或<textarea>
这样的表单元素才能发送到服务器。
如果必须使用当前的方法,请在提交表单之前使用jQuery将其存储在表单元素中。
HTML:<form id="form" method="post" action="/some.php">
<input type="hidden" id="hidden_preview" name="preview" value="">
<!-- etc -->
jQuery: $('#form').on('submit', function() {
var str = $('#preview')[0].outerHTML; // not a jQuery property
$('#hidden_preview').val(str);
});
https://developer.mozilla.org/en-US/docs/Web/API/element.outerHTML 也就是说,我强烈建议使用某种形式的markdown而不是HTML来防止站点中的跨站点脚本攻击。它更容易输入,不难学习,让您使用标准的<textarea>
表单元素,如果您喜欢,有JS插件创建工具栏(如StackOverflow),使进入markdown更容易。