【发布时间】:2020-09-15 20:08:43
【问题描述】:
我是 php 新手,现在在 $_SESSION 数组中存储数据时遇到问题。我有一个索引页面,它从 XML 文件中检索信息,并在页面中显示 XML 文件中的每个产品,每个产品都有一个添加到购物车的按钮。当按下按钮时,我会发送一个XMLHttpRequest,其中包含我要添加到$_SESSION 数组中的产品ID。
这是主页:
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]
发生的事情是,在我添加产品后,它会在会话数组中删除以前的产品,所以每次我在数组中只有一个产品并且我想存储所有这些产品以便稍后在购物车中显示它们. php 应该向主页返回一个变量来指示产品的可用性,但我稍后会这样做。
$arra 是一个数组,我在其中存储从与从主页发送的 Id 的产品相对应的 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;
}
如果有人可以帮助我,我将不胜感激。 谢谢
【问题讨论】:
-
我认为您需要制作完整的数组,然后将其放入会话中
-
我不太确定,但这看起来不太好
$_SESSION[$rf][$f]=$arra[$f];