$ _SESSION数组不起作用,无法向其添加对象

时间:2018-04-25 07:24:00

标签: php arrays

早上好,我不确定我的代码发生了什么,但我自己找不到解决方案。我创建了一个表单,无论何时添加新类别,它都应该显示在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');

1 个答案:

答案 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>";
}