php - 创建购物车时遇到问题 [PHP 和 XML]

标签 php xml session shopping-cart

我正在开发一个包含四个网页和一个 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 文件是可扩展的,我们可以添加新的项目 或新的类别。 网站 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 后,我在 $_SESSION[‘foodType’] 中存储了 $_POST[‘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.phpindex.php
    我想不出如何将数据存储在 $_SESSION 超全局中,以便在计算时,我能够唯一地识别 Pizza 或 sald 或随后添加的任何类型的 foodType。事实上,我完全不知所措,不知道如何处理这个页面。

如果问题看起来太长,我真的很抱歉。但这花了我一整天的时间,我仍然不知道该怎么做。所以问的比较详细,方便大家帮忙。
非常感谢。非常感谢任何人的帮助。

最佳答案

关于 $_SESSION,您正在尝试检索一个尚不存在的值。 在 display.php 中执行以下操作

获取用户提交的数据到display.php
$selected = $_POST["foodType"];
将用户提交的数据存储到 session 变量中,
$_SESSION["foodType"] = $selected;

现在以后可以通过 $_SESSION["foodType"] 检索 session 数据

此外,添加 <?php session_start(); ?>在 display.php 的开头,如果你看到 $_SESSION undefined留言

关于php - 创建购物车时遇到问题 [PHP 和 XML],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32989827/

相关文章:

java - 使用java生成带有特定DTD声明的XML

excel - 通过宏修改和替换XML文件到相同的路径(Excel VBA)

php - PHP 是否有像 perl 一样的默认赋值习惯用法?

php - Codeigniter $this->db->select() 不适用于 Round(Max()) 或 FORMAT(MAX())

c# - 将巨大的 xml 参数传递给存储过程的最佳方法

ruby-on-rails - Rails 3 跨子域 flash 消息

php - 使用 PHP session 并使用 PDO 选择 bool?

java - 使用 spring SecurityContextHolder 在 tomcat 中 session id 为 null

php - Laravel 5.3 抛出错误表单请求

php - 如何在 IIS 中调试 PHP?