对多个文本区域使用隐藏的输入类型,创建多个插入

时间:2018-07-22 12:24:26

标签: javascript php jquery html mysql

我建立了一个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);

0 个答案:

没有答案