为什么我在php中得到未定义的变量错误

时间:2015-11-01 06:21:36

标签: php undefined

我正在尝试为手机创建一个小型购物车,我已经到了一个可以工作的阶段,现在我想在我的标题中回显我的$ item_total成本,我有我的图标然后我得到这个未定义的变量错误, 请注意,这个$ item_total变量在我的程序下面工作,但是在我的标题中拒绝回显我有我的购物车图标。 我将更多地粘贴我的代码

    <!DOCTYPE html>
    <html>
    <head>
        <title>Page Title</title>

        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="stylesheet" href="add/jquery.mobile-1.4.5.min.css" />
        <link rel="stylesheet"  href="themes/jqm-icon-pack-fa.css" />

        <link rel="stylesheet" href="themes/mine.css" />
      <link rel="stylesheet" href="themes/jquery.mobile.icons.min.css" />
        <script src="add/jquery.js"></script>
        <script src="add/jquery.mobile-1.4.5.min.js"></script>

    </head>
    <body>

    <div data-role="page">


    <br /> <div class="ui-bar-b" data-role="navbar">
        <ul>
            <li><a href="#" data-icon="bars" data-theme="c">elete</a></li>

            <li><a href="#" data-icon="shopping-cart" data-theme="d" data-ajax="false"><?php
             echo "$".$item_total; ?> 
// **my cart in the header where i try to echo my total 
and i get the undefined error** //View Cart 
            </a></li>
        </ul>



        </div> 

        <!-- /header -->

        <div role="main" class="ui-content">
            <div id="shopping-cart">

    <div class="txt-heading">Shopping Cart <a id="btnEmpty" href="app.php?action=empty">Empty Cart</a></div>
    <?php
    if(isset($_SESSION["cart_item"])){
        $item_total = 0;
    ?>  





        <br />

    <form method="post" action="accept.php">
    <table cellpadding="10" cellspacing="1">
    <tbody>
    <tr>
    <th><strong>Name</strong></th>
    <th><strong>Code</strong></th>
    <th><strong>Quantity</strong></th>
    <th><strong>Price</strong></th>
    <th><strong>Action</strong></th>
    </tr>   
    <?php       
        foreach ($_SESSION["cart_item"] as $item){


            ?>
                    <tr>
                    <td><strong><?php echo $item["name"]; ?><br /><input type="hidden" name="itemname[]" value="<?php echo $item["name"]; ?>"></strong></td>
                    <td><?php echo $item["code"]; ?></td>
                    <td><?php echo $item["quantity"]; ?><br /><input type="hidden" name="itemqt[]" value="<?php echo $item["quantity"]; ?>"><input type="hidden" name="itemcd[]" value="<?php echo $item["code"]; ?>"></td>
                    <td align=right><?php echo "$".$item["price"]; ?><br /><input type="hidden" name="itemprice[]" value="<?php echo $item["price"]; ?>"></td>
                    <td><a href="app.php?action=remove&code=<?php echo $item["code"]; ?>" class="btnRemoveAction">Remove Item</a></td>
                    </tr>
                    <?php
            $item_total += ($item["price"]*$item["quantity"]);
            }
            ?>


    <tr>
    <td colspan="5" align=right><p><strong>Total:</strong>
<br /><input type="text"
 value="<?php echo "$".$item_total; ?>" 
name="total">// **this is where its echoed without an error**
 //
    </p>
      <p>
        <input type="submit" name="button" id="button" value="Submit">
      </p></td>
    </tr>
    </tbody>
    </table>        </form>


      <?php
    }
    ?>
    </div>

    <div id="product-grid">
        <div class="txt-heading">Products</div>
        <?php
        $product_array = $db_handle->runQuery("SELECT * FROM tblproduct ORDER BY id ASC");
        if (!empty($product_array)) { 
            foreach($product_array as $key=>$value){
        ?>
            <div class="product-item">
                <form method="post" action="app.php?action=add&code=<?php echo $product_array[$key]["code"]; ?>">
                <div class="product-image"><img src="<?php echo $product_array[$key]["image"]; ?>"></div>
                <div><strong><?php echo $product_array[$key]["name"]; ?></strong></div>
                <div class="product-price"><?php echo "$".$product_array[$key]["price"]; ?></div>
                <div><input type="text" name="quantity" value="1" size="2" /><input type="submit" value="Add to cart" class="btnAddAction" /></div>
                </form>
            </div>
        <?php
                }
        }
        ?>
    </div>
    </div><!-- /content -->

        <!-- /page -->

    </body>
    </html>

我的问题是为什么我首先得到这个错误,它在第二位起作用。

2 个答案:

答案 0 :(得分:0)

使用php isset

在首页上添加此代码

<?php 
start_session(); //ignore if your session already statred
foreach ($_SESSION["cart_item"] as $item){ 
$item_total += ($item["price"]*$item["quantity"]); 
} 
?> 

<li>
<a href="#" data-icon="shopping-cart" data-theme="d" data-ajax="false">
<?php
if(isset($item_total))
echo "$".$item_total; 
?> 

或尝试此代码: -

if(isset($item_total)){
    echo "$".$item_total;
}else{
echo "price not available";
}

使用此代码: -

<li>
<a href="#" data-icon="shopping-cart" data-theme="d" data-ajax="false">
<?php
if(isset($item_total)){
echo "$".$item_total; 
}else{
echo "$0";
}

答案 1 :(得分:0)

问题是你在标题之后定义$ item_total并在之前回显(在标题中)。所以基本上如果在定义PHP之前使用变量抛出一个未定义的错误。您可以做的是编写一个单独的类来计算$ item_total并在该类中执行所有购物逻辑。在标题之前包含该类,以便在标题中包含$ item_total值并使用header中的值。希望这可以解决您的问题。