无法创建购物车[PHP和XML]

时间:2015-10-07 10:27:31

标签: 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或者随后添加的任何类型。事实上,我完全不知所措,不知道如何处理这个页面。

如果问题太长,我真的很抱歉。但它花了我一整天,我仍然无法弄清楚如何去做。因此,详细询问这个问题,以便你们帮助我们 非常感谢提前。任何人的帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

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

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

现在可以通过$_SESSION["foodType"]

检索会话数据

另外,在display.php的开头添加<?php session_start(); ?>,以防您看到$_SESSION undefined消息