创建购物车时遇到问题 [PHP 和 XML]
Posted
技术标签:
【中文标题】创建购物车时遇到问题 [PHP 和 XML]【英文标题】:Having trouble creating shopping cart [PHP and XML] 【发布时间】:2016-01-04 13:02:06 【问题描述】:我正在开发一个包含四个网页和一个 xml 文件的网站。 menu.xml 文件包含可食用的菜单,看起来像这样
<menu>
<item name="Pizzas">
<category name="Onions" small="6.85" large="10.85">
</category>
<category name="Peppers" small="6.85" large="10.85">
</category>
</item>
<item name="Salads">
<category name="Garden" small="3.50" large="4.50">
</category>
</item>
</menu>
menu.xml 文件是可扩展的,我们可以添加新的items 或新的categories。
网站index.php
的主页以下拉列表的形式显示(假披萨)商店中的所有商品。
解析xml并在下拉菜单中显示项目的代码为:
<form action="display.php" method="post">
<select name="foodType">
<?php
$dom = simplexml_load_file("menu.xml");
foreach($dom->xpath("/menu/item") as $item)
?>
<option value="<?php echo $item['name'] ?>" >
<?php echo $item['name']; ?>
</option>
<?php
?>
</select>
<input type="submit" value="Let's Eat" />
</form>
到达 display.php 后,我已将 $_POST[‘foodType’]
的值存储在 $_SESSION[‘foodType’]
此页面使用以下代码显示项目的所有类别。
<?php
$selected = $_SESSION['foodType'];
$dom = simplexml_load_file("menu.xml");
$i = 0;
foreach($dom -> xpath('item[@name="' . $selected . '"]/category') as $category)
echo '<li>';
echo '<h3>' . $category['name'] . '</h3>';
echo '</li>';
$_SESSION[$selected][$i] = "$category['name']";
?>
<form action="calculator.php" method="post">
<table border="1" style="border-collapse:collapse">
<tr>
<th>Small</th>
<th>Large</th>
</tr>
<tr>
<td style="text-align:center;height:20px;"><input type="text" name="small[<?php echo $i ?>]" /></td>
<td style="text-align:center;height:20px"><input type="text" name="large[<?php echo $i ?>]" /></td>
</tr>
</table>
<?php
$i =($i+1);
?>
到目前为止一切顺利。我遇到的问题是在calculator.php 中。 此页面应该:
显示当前购买的商品。 根据商品名称显示这些商品的价格。 继续checkout.php
或index.php
取决于用户的提交
我不知道如何将数据存储在$_SESSION
superglobal 中,以便在计算时,我能够唯一地识别比萨的 foodType、sald 或任何随后添加的类型。事实上,我完全不知所措,不知道如何处理这个页面。
如果问题看起来太长,我真的很抱歉。但这花了我一整天的时间,我仍然不知道该怎么做。因此,详细地问了这个问题,以便你们帮助我。 提前非常感谢。任何人的帮助将不胜感激。
【问题讨论】:
【参考方案1】:关于 $_SESSION,您正在尝试检索一个尚不存在的值。 在 display.php 中执行以下操作
获取用户提交的数据到display.php$selected = $_POST["foodType"];
将用户提交的数据存储到会话变量中,$_SESSION["foodType"] = $selected;
现在会话数据可以通过$_SESSION["foodType"]
稍后检索
另外,在display.php的开头加上<?php session_start(); ?>
,以防你看到$_SESSION undefined
消息
【讨论】:
谢谢哥们。但是我展示的代码 sn-p 假定我在$_SESSION
中存储了适当的值,而$_SESSION
包含在第一页中选择的值。另外我一开始已经用过session_start
了。
你能发布在 $_SESSION 中存储适当值的代码吗?
这是在会话中存储适当值的代码行session_start(); $_SESSION['foodType'] = $_POST['foodType'];
代码看起来不错....我猜你无法在calculator.php 中检索到这个$_SESSION['foodType']
....你介意发布它吗。
不,我也可以在那里检索$_SESSION['foodType']
。我无法解决的问题是,一旦用户选择了比萨饼,$_SESSION['foodType']
将包含比萨饼,现在用户返回 index.php 并选择另一种食物类型,比如沙拉并点击输入,比萨饼的先前值存储在S_SESSION['foodType']
会丢失并随沙拉一起更新,而为了维护我的购物车,我需要一些存储机制来稍后检索所有值。这意味着我应该始终存储所有“项目”值。该怎么做?以上是关于创建购物车时遇到问题 [PHP 和 XML]的主要内容,如果未能解决你的问题,请参考以下文章
使用 WooCommerce 时出错 - 在 $product 上使用 is_type 函数