array_push не добавит элемент в массив в PHP - PullRequest
0 голосов
/ 29 декабря 2018

Я использую сеансы и пытаюсь создать приложение, которое будет хранить временные данные (на данный момент), и я использую этот код для добавления «курсов» в мой массив сеансов userCourses:

$_SESSION['userCourses'] = array(
    $_SESSION['siteCourses'][0],
);
if(isset($_GET['id'])){
    $id = $_GET['id'];
    array_push($_SESSION['userCourses'], $_SESSION['siteCourses'][$id]);
}

Мой адреснаписано так:

<a class="green" href="<?php echo 'coursesDisplay.php?id='.$course[2]; ?>" >Add Course</a>

, где $ course [2] представляет собой идентификатор курса (представьте его как Auto Increment int, индивидуальный для каждого курса)

Теперь, когда я нажимаюссылка, это добавляет к моему массиву, но когда я захожу на сайт без запроса get, я идентифицирую эту часть:

...url/file.php?id=1

, он не показывает курсы, и, более того, всякий раз, когда я добавляю другой курс,предыдущий перезаписывается, несмотря на добавление его рядом с предыдущим.

Моя логика ошибочна (или просто глупа), я что-то упустил?Это возможно с помощью сессий или мне нужно использовать БД для этого?Я довольно новичок в PHP, и я хотел сделать простое приложение, использующее сессии перед переходом на базы данных.

Примечание: я не забыл поставить start_session ();Помимо файлов, я просто хотел сохранить вопрос в чистоте и не включать в себя целые файлы, но если кому-то понадобится я, я могу выложить весь код на диск или что-то еще, и они смогут его загрузить.

1 Ответ

0 голосов
/ 29 декабря 2018

Похоже, вы переинициализируете переменную сеанса каждый раз, когда запускается скрипт.Может быть, сначала проверьте, является ли переменная сеанса пустой, и только если она инициализирована.Что-то вроде:

if (empty($_SESSION['userCourses'] )) 
{ 
    $_SESSION['userCourses'] = array( $_SESSION['siteCourses'][0], ); 
}
...