我有一个内置的CMS,允许用户创建由不同面板组成的“页面”,每个面板都有各自的内容。我做了这项工作,以便用户可以创建一个包含一个面板和一个文本区域内容的页面,但是我仍然不知道如何对多个面板/内容执行此操作。
当前,如果页面加载从URL值中获取值“ 1”,则会加载全角div和半角div的html模板。我试图用隐藏的输入类型设置每种面板的类型,它们都有自己的tinymce文本区域。
<?php if($value == 1){?>
<form method="post">
<div class="col-lg-12 fullWidth" id="full">
<input type="hidden" name="fullWidth" value="">
<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">
<input type="hidden" name="halfWidth" value="">
<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>
</form>
<?php } ?>
完成此操作后,他们将保存页面,还有另一种形式,可以让他们设置页面标题,并且还可以获取页面类型(上面的$ value)
<form action="addPage.php" method="post">
<input type="hidden" name="pageType" value="<?php echo $value;?>">//This comes from the url value
<input class="form-control" id="addTitle" name="addTitle">
<input type="submit" name="Save Page">
问题是,当我现在调用addPage.php脚本以插入记录时,我不知道如何正确传递值,因此我无法添加一页记录(page_type_id和Title的$ value),但是然后在文本区域插入2条内容和面板记录。
在上面的代码中,这是我的预期插入内容:
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 :(得分:1)
我想您的问题是处理多个数据收集。在元素名称中使用[]可以收集同一集合的多个数据。
<textarea class="original" id="mytextarea3" name="fullText[]">Some Text Here</textarea>
在保存的同时,您从fullText获得数组。循环浏览并保存。
如果您有多个相同格式的文档。在第一个循环中使用键访问其他元素数组中的相应数据。
希望有帮助!
答案 1 :(得分:1)
您管理错误,应该是:
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,2 | 1 | 1,2
我在您的表单中找不到panelType
,但是,您应该检测到用户选择的panels Ids
,然后将其发送到php
,例如:
如果用户选择面板(1)和面板(2),则您的脚本应在此处编写:
<input type="hidden" value="1,2">
我们用逗号分隔panels Ids
,因为从database
获取数据时我们将需要它。
如何获取panels IDs
:
从database
获取数据后,它就像1,2
,这对您不起作用,那么如何将它们放入数组中?
这很简单,只需执行以下操作即可:
<?php
$string = "1,2";
$get = explode(',', $string ); // explode with ,
?>
现在,您将拥有如下数组:
Array ( [0] => 1 [1] => 2 )
如何使用它?
您可以使用循环:
<?php
$string = "1,2";
$get = explode(',', $string ); // explode with and
$count = count($get);
for ($i=0; $i < $count; $i++) {
$PaN = $get[$i];
/*Some code....*/
}
?>
希望我能理解你。