我目前正在从事个人内容管理系统项目,但我遇到了问题。
<ul>
<?php
if(!$result) { //Check for result
die("You have no pages ☹ Why not create one?");
} else {
while ($pages = mysqli_fetch_assoc($result)) { //Loop through results
?>
<li class="triple"><span><?php echo $pages["title"]?></span><span><?php echo $pages["visible"] ?><span /><form action = "editPage.php" method="post"><input type="submit" value="Edit Page" name="<?php $pages["title"];?>" /></form></li> //Create li elements for each result that gets created
<?php
};
};
?>
</ul>
基本上,我正在使用查询来从mySQL表中结果并列出页面列表,我遇到的问题是,在最终形式上,我想发生的事情是我希望存储一个会话变量说要编辑哪个页面,但是我无法在末尾以表格中的 $_POST
获取名称,因为显然名称是从表中自动生成的。每个使用它的人都有一个页面的名称,所以我不能只得到一个名称,例如$_POST['homepage']
。
如果有人可以提供有关如何解决我的问题的建议,甚至可以提出更好的解决方案来存储哪个页面,因为它会进入另一个页面(editpage.php(,这将是很棒的。
使用 $_SESSION[]
存储$页面数组的数据,然后在editpage.php上再次访问。您将需要确保在这两个页面上致电start_session();
,以按预期工作。由于您正在创建多种表格,并且不知道PHP运行时将提交哪一种表格.php:
$_SESSION['pages'] = array();
while ($page = mysqli_fetch_assoc($result)) {
$_SESSION['pages'][] = $page;
echo "<li class="triple">
<span>".$page["title"]."</span>
<span>".$page["visible"]."</span>
<form action="editPage.php" method="post">
<input type="hidden" name="pageID" value="".$page['id']."">
<input type="submit" value="Edit Page">
</form>
</li>";
}
然后在editpage.php
中foreach($_SESSION['pages'] as $page){
if($page['id'] == $_POST['pageID']){ $editpage = $page; break; }
}
// do stuff with $editpage data
另一个选项是使用serialize($page)
并在隐藏输入元素中发送带有表单数据的数组。
<input type='hidden' name='data' value='<?php echo serialize($page); ?>'>
然后,您可以使用$editpage = unserialize($_POST['data']);
将其转回editpage.php。