早上好,我不确定我的代码发生了什么,但我自己找不到解决方案。我创建了一个表单,无论何时添加新类别,它都应该显示在select元素中。但是当我尝试将其打印出来时,我可以看到每当我添加一个类别时,旧的类别会被替换而不会作为第二个项目添加到数组中。即便如此,我的表单也没有从$ _SESSION ['类别']获得数组。关于我做错了什么的任何建议?
的index.php
<?php session_start(); ?>
<form action="AddCategory.php" method="post">
<input type="text" name="categoryName" />
<select name="parentName">
<?php
if(isset($_SESSION['categories'])) {
foreach ($_SESSION['categories'] as $category) {
echo "<option>" . $category->name . "</option>";
}
} else {
echo "<option>No categories found</option>";
}
?>
</select>
<input type="submit" name="submit" value="Submit">
</form>
AddCategory.php
<?php
session_start();
require_once "Classes/Category.php";
if(isset($_POST['submit'])) {
if(isset($_POST['categoryName'])) {
$category = new Category(5, $_POST['categoryName']);
$_SESSION['categories'][] = $category;
}
}
header('Location: index.php');
答案 0 :(得分:3)
而不是将整个对象存储在会话中。如果只需要一个字段,请尝试将所需值存储为字符串;如果需要更多字段,则尝试将其作为数组存储,如下所示。
根据您的数据库字段更改带有类别ID的$ category-&gt; id。
AddCategory.php中的更改
这
$_SESSION['categories'][] = $category;
要
$_SESSION['categories'][] = ["id" => $category->id, "name" => $category->name];
并在index.php中更改
这
foreach ($_SESSION['categories'] as $category) {
echo "<option>" . $category->name . "</option>";
}
要
foreach ($_SESSION['categories'] as $category) {
echo "<option>" . $category['name'] . "</option>";
}