如何在单击按钮时将会话值保存为数组并显示在另一页上?

时间:2018-10-24 15:41:26

标签: php arrays session

我正在尝试启动一个会话,只需单击一下按钮,即可将产品名称保存到数组中-然后可以撤消这些名称并将其显示在名为“收藏夹”的页面上,该页面实际上只是产品列表查看器正在使用会话按钮进行保存。我似乎可以部分解决这个问题,即它最初是在我的收藏夹页面上显示该数组,但现在它根本不显示任何结果...

我是新手,我尝试从头开始重写,但是我正在拔头发,希望有人发现一个明显的错误可以为您提供帮助!

我在产品页面的开头有以下代码:

   <?php
     session_start();
     if($_POST['submit'])
     {
      if(count($_SESSION['arr'])==0)
      {
       $ar=array();
       $val=$_POST['value'];
       array_push($ar,$val);
       $_SESSION['arr']=$ar;
      }
      else
      {
       $val=$_POST['value'];
       array_push($_SESSION['arr'],$val);
      }
     }
    ?>

在同一页面中包含以下代码(用于创建按钮):

<form action="/favourites" method="post">
  <input type="hidden" name="value" value="<?php echo $pn;?>">
  <input type="submit" name="submit" value="Submit">
</form>

(注意:<?php echo $pn;?>从我的数据库中调用产品名称)

然后,在收藏夹页面的顶部,我有:

<?php
 session_start();
?>

并且在“收藏夹”页面中,我尝试使用以下方式显示会话的内容:

<?php 
print_R($_SESSION['arr']);
?>

当前,我的收藏夹页面根本不打印阵列,只是空白。

2 个答案:

答案 0 :(得分:1)

如果您将数组保存在一个会话中会更好,那么可以使用 json_encode 函数对其进行编码,然后再使用 json_decode

对其进行解码

推荐人:

示例编码:

<?php
 session_start();
 if($_POST['submit'])
 {
  if(count($_SESSION['arr'])==0)
  {
   $ar=array();
   $val=$_POST['value'];
   array_push($ar,$val);
   $_SESSION['arr']=json_encode($ar);
  }
  else
  {
   $val=$_POST['value'];
   array_push($_SESSION['arr'],$val);
  }
 }
?>

解码示例:

<?php var_dump(json_decode($_SESSION['arr']));?>

希望有帮助!

答案 1 :(得分:1)

使用以下内容编写会话: session_write_close()

   <?php
     session_start();
     if($_POST['submit'])
     {
        if(count($_SESSION['arr'])==0)
        {
           $ar=array();
           $val=$_POST['value'];
           array_push($ar,$val);
           $_SESSION['arr']=$ar;
        }
        else
        {
           $val=$_POST['value'];
           array_push($_SESSION['arr'],$val);
        }
        session_write_close();
     }
   ?>

并按如下所示更改“收藏夹”页面的代码:

   <?php
     session_start();
     print_R($_SESSION['arr']);
     session_write_close();
   ?>