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

创建购物车[PHP和XML]时遇到问题,php,xml,session,shopping-cart,Php,Xml,Session,Shopping Cart,我正在开发一个包含四个网页和一个xml文件的网站。 xml文件包含可食文件的菜单,看起来像这样 <menu> <item name="Pizzas"> <category name="Onions" small="6.85" large="10.85"> </category> <category name="Peppers" small="6.85" large="10.85">

我正在开发一个包含四个网页和一个xml文件的网站。 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>
到达display.php后,我将
$\u SESSION['foodType']
的值存储在
$\u 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);
            }?>
xpath('item[@name=“.”.$selected.'']/category')作为$category)
{
回音“
  • ”; 回显'.$category['name'].'; 回音“
  • ”; $\会话[$selected][$i]=“{$category['name']}”; ?> 小的 大的
    关于$\u会话,您正在尝试检索一个尚不存在的值。 在display.php中执行以下操作

    获取用户提交到display.php中的数据
    $selected=$\u POST[“foodType”];

    将用户提交的数据存储到会话变量中,
    $\u会话[“foodType”]=$selected;

    现在,以后可以通过
    $\u session[“foodType”]


    另外,在display.php的开头添加
    ,以防您看到
    $\u SESSION undefined
    消息

    ,谢谢,伙计。但是我显示的代码片段假设我在
    $\u SESSION
    中存储了适当的值,
    $\u SESSION
    包含在第一页中选择的值。而且我已经使用了
    session_start
    在开头。您能在$_会话中发布存储适当值的代码吗?以下是在会话中存储适当值的代码行$_会话['foodType']=$_post['foodType'];
    代码看起来不错……我猜您无法检索此$_会话['foodType']在calculator.php中…您介意也发布它吗?不,我也可以在那里检索
    $\u会话['foodType']
    。我无法解决的问题是,一旦用户选择了比萨饼,
    $\u会话['foodType']
    将包含比萨饼,现在用户返回index.php并选择另一种食物类型,如沙拉和点击enter键,即存储在
    S_会话['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);
                }?>