Я новичок в php, и сейчас у меня проблема при хранении данных в массиве $_SESSION
. У меня есть индексная страница, которая извлекает информацию из файла XML и отображает каждый продукт из файла XML на странице, каждый с кнопкой для добавления в корзину. При нажатии кнопки я отправляю XMLHttpRequest
с идентификатором продукта, который хочу добавить в массив $_SESSION
.
Это главная страница:
function check_avi(id){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var available = this.responseText;
if (available == "True") {
alert("Add to the cart successfully.");
} else {
alert("Sorry, the car is not available now. Please try other cars.");
}
}
};
xhttp.open("GET", "add_delete_session.php?action=add&id="+id, true);
xhttp.send();
В php я открываю xml, извлекаю информацию и сохраняю ее в массив, затем я копирую информацию в $_SESSION[#number of product]
Что происходит, так это то, что после добавления продукта он удаляется в session массив предыдущих продуктов, поэтому каждый раз у меня есть только один продукт в массиве, и я хочу сохранить их все, чтобы потом показывать их в корзине для покупок. php должен возвращать переменную на главную страницу, указывающую на доступность продукта, но я сделаю это позже.
$ Arra - это массив, в котором я сохраняю значения, полученные из XML файл, соответствующий продукту с идентификатором, отправленным с главной страницы, например, цена или название. $ rf - это переменная, которая подсчитывает количество хранимых продуктов и выполняет ту же функцию, что и $ _SESSION ['g']
Это мой PHP:
<?php
session_start();
$id = $_GET[id];
$action = $_GET[action];
if (empty($_SESSION['g'])) {
$_SESSION['g'] = 0;
}
switch($action){
case "add" :
$xmlDoc = new DOMDocument();
$xmlDoc = simplexml_load_file("cars.xml");
for ($e = 0; $e < 10; $e++) {
$cont = 0;
unset($arra);
foreach ($xmlDoc->carrito[$e]->children() as $child) {
$arra[$cont] = $child;
$cont = $cont + 1;
}
if ($arra[0] == $id) {
for ($f = 0; $f < 10; $f++) {
$rf = $_SESSION['g'];
$_SESSION[$rf][$f] = $arra[$f];
}
$_SESSION['g'] = $_SESSION['g'] + 1;
}
}
break;
case "delete":
break;
}
Если бы кто-нибудь мог помогите мне, я буду так благодарен. Спасибо