Как сохранить значения сеанса в виде массива при нажатии кнопки и отобразить на другой странице? - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь начать сеанс, в котором имена продуктов сохраняются в массиве одним нажатием кнопки - их можно удалить и отобразить на странице с именем «избранное», которая, по сути, представляет собой список продуктов, которыезритель сохраняет с помощью кнопки сеанса.Мне показалось, что это частично работает, то есть сначала он отображал массив на моей странице избранного, но теперь он вообще не показывает никаких результатов ...

Я новичок в этом, и я пыталсяпереписываю с нуля, но я дергаю себя за волосы и надеюсь, что кто-то может помочь, заметив очевидную ошибку!

У меня есть следующий код в самом начале моей страницы продукта:

   <?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 голосов
/ 24 октября 2018

Используйте следующую команду для записи сеанса: 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();
   ?>
0 голосов
/ 24 октября 2018

будет лучше, если вы сохраните свой массив за один сеанс, кодируя его с помощью функции 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']));?>

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...