【问题标题】:Having trouble creating shopping cart [PHP and XML]创建购物车时遇到问题 [PHP 和 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.phpindex.php取决于用户的提交
    我不知道如何将数据存储在$_SESSION superglobal 中,以便在计算时,我能够唯一地识别比萨的 foodType、sald 或任何随后添加的类型。事实上,我完全不知所措,不知道如何处理这个页面。

如果问题看起来太长,我真的很抱歉。但这花了我一整天的时间,我仍然不知道该怎么做。因此,详细地问了这个问题,以便你们帮助我。
提前非常感谢。任何人的帮助将不胜感激。

【问题讨论】:

    标签: php xml session shopping-cart


    【解决方案1】:

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

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

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

    另外,在display.php的开头加上&lt;?php session_start(); ?&gt;,以防你看到$_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'] 会丢失并随沙拉一起更新,而为了维护我的购物车,我需要一些存储机制来稍后检索所有值。这意味着我应该始终存储所有“项目”值。该怎么做?
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2011-08-01
    相关资源
    最近更新 更多