【问题标题】:How can I save session values as array on button click and display on another page?如何在按钮单击时将会话值保存为数组并显示在另一个页面上?
【发布时间】:2019-03-29 02:35:27
【问题描述】:

我正在尝试启动一个会话,通过单击按钮将产品名称保存到一个数组中 - 然后可以检索这些名称并将其显示在名为“收藏夹”的页面上,该页面本质上只是一个产品列表查看器正在使用会话按钮进行保存。我似乎有这个部分工作,即它最初在我的收藏夹页面上显示数组,但现在它根本没有显示任何结果......

我是新手,我已经尝试从头开始重写,但我正在拉扯我的头发,我希望有人可以通过发现一个明显的错误来提供帮助!

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

   <?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>

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

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

<?php
 session_start();
?>

在收藏夹页面中,我试图显示会话的内容:

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

目前我的收藏页面根本没有打印数组,它只是空白。

【问题讨论】:

    标签: php arrays session


    【解决方案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();
       ?>
    

    【讨论】:

    • 感谢您的帮助。我尝试使用您在上面建议的代码,但没有成功(收藏夹页面上根本没有显示任何内容)。我尝试显示错误,但我看到:注意:未定义索引:arr in ...(目录)... @Shanteshwar
    【解决方案2】:

    如果您将数组保存在一个会话中,使用 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']));?>
    

    希望对您有所帮助!

    【讨论】:

    • 感谢您的帮助。我已经尝试过您的建议,但是当我单击产品页面上的按钮时,我只是在收藏夹页面上得到“NULL”。
    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 2018-04-16
    • 2021-12-17
    • 2015-05-14
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多