我建立了一个CMS,允许用户保存带有“面板”的页面,这些面板基本上是包含自己内容的div。它在div中使用TinyMCE来创建内容,我已经开始使用它了,但是只能在一个主面板上使用,我正在尝试找出修改此方法以保存多个面板的方法。
我的if语句从URL值中获取$ value,如果为1,则使用全角html模板
<?php if($value == 1){?>
<?php $panelType = 1;?>
<div class="col-lg-12 fullWidth" id="full">
<div class="fullContent" style="background-color: white; height: 100%;">
<form id="form-data3" method="post">
<textarea class="original" id="mytextarea3" name="fullText"></textarea>
<input type="submit" value="Save Content">
</form>
</div>
</div>
<?php } ?>
然后,我有了javascript,它将来自文本区域的内容保存为我的“保存页面”表单中调用mysql插入的隐藏输入的值。
<script type="text/javascript">
function content() {
var content = tinyMCE.get('mytextarea3').getContent();
$("#new").val(content);
}
</script>
<form action="addPage.php" method="post">
<input type="hidden" name="pageType" value="<?php echo $value;?>">//This comes from the url value
<input type="hidden" name="panelType" value="<?php echo $panelType;?>">//How would I loop this and the next hiddent input
<input type="hidden" id="new" name="page_content" value=""> //The javascript saves the textarea content as this value
<input class="form-control" id="addTitle" name="addTitle">
<input type="submit" name="Save Page">
我的addpage.php脚本采用以下形式,并将记录插入页面表中,获取插入的ID,将记录插入内容表中,获取该ID,最后使用检索到的页面和内容插入面板表中ID(此插入脚本在底部)。到现在为止,它可以完美地工作。
我的问题是添加了多种面板类型。因此,假设我修改了我的html模板,以现在基于每个DIV设置panelType,并在两个textareas上都运行了我的JavaScript
<?php if($value == 1){?>
<div class="col-lg-12 fullWidth" id="full">
<?php $panelType = 1;?>
<div class="fullContent" style="background-color: white; height: 100%;">
<form id="form-data3" method="post">
<textarea class="original" id="mytextarea3" name="fullText">Some Text Here</textarea>
<input type="submit" value="Save Content">
</form>
</div>
</div>
<div class="col-lg-12 halfWidth" id="half">
<?php $panelType = 2;?>
<div class="halfContent" style="background-color: white; height: 100%;">
<form id="form-data4" method="post">
<textarea class="original" id="mytextarea4" name="halfText">Some Text There</textarea>
<input type="submit" value="Save Content">
</form>
</div>
</div>
<?php } ?>
<script type="text/javascript">
function content() {
var content = tinyMCE.get('mytextarea3').getContent();
$("#new").val(content);
}
</script>
<script type="text/javascript">
function content() {
var content = tinyMCE.get('mytextarea4').getContent();
$("#new").val(content);
}
</script>
所以这行不通,因为我试图将两个textarea内容都设置为#new的值。但是,即使我有2个隐藏的输入字段,也无法正确插入数据库中。因此,我不知道是否可以将其作为插入的隐藏类型循环,或者是否有其他方法。
根据我的插入脚本,我期望从html模板上方获取的记录是
pages
ID | Title | page_type_id
1 | TitleNew | 1 /*this comes from $value*/
content
ID | Content
1 | Some Text Here
2 | Some Text There
panels
ID | panel_type_ID | page_id | content_id
1 | 1 | 1 | 1
2 | 2 | 1 | 2
这可以在所有3个表中一次插入,但是如果我可以为每个div设置多种面板类型,我该如何修改它以仍然插入一页记录,但可以成功处理多个面板和内容?
这是添加页面脚本
//Insert Page
$title = $_POST['addTitle'];
$page_type = $_POST['pageType'];
$addpage = "
INSERT INTO pages (title, page_type_id)
VALUES ('$title','$page_type');
";
$mysqlConn->query($addpage)
$page_id = $mysqlConn->insert_id;
//Insert Content
$content = $_POST['page_content'];
$addContent = "
INSERT INTO content(content)
VALUES('$content');
";
$mysqlConn->query($addContent);
$cont_id = $mysqlConn->insert_id;
//Insert panel(s)
$panelID = $_POST['panelType'];
$addPanel = "
INSERT INTO panels(panel_type_id, page_id, cont_id)
VALUES ('$panelID', '$page_id', '$cont_id');
";
$mysqlConn->query($addPanel);