【问题标题】:Undefined index in PHP code? [closed]PHP代码中未定义的索引? [关闭]
【发布时间】:2013-02-15 22:43:14
【问题描述】:

我的 PHP 代码有一些问题。我有一个变量“$total”的未定义索引错误。我需要一些帮助来解决这个问题。这是我的整个 PHP 代码。

<?php
include('inc/connect.php');
session_start();
?>
<html>
<head>
    <title>Cart</title>
    <link rel='stylesheet' href='css/main.css' />
</head>
<body>
    <?php
    $page = 'index.php';

    if(isset($_GET['add'])){
        $add_id = $_GET['add'];
        $quantity = mysql_query("SELECT id, quantity FROM products WHERE id='$add_id'");
        while($quantity_row = mysql_fetch_assoc($quantity)){
            if($quantity_row['quantity'] !=@$_SESSION['cart_'.$add_id]){
                @$_SESSION['cart_'.$_GET['add']]+='1';
                header('Location: index.php');
            }
            else{
                header('Location: index.php?err=max');
            }
        }

    }

    if(isset($_GET['remove'])){
        $_SESSION['cart_'.(int)$_GET['remove']]--;
        header("Location: index.php");
    }

    if(isset($_GET['delete'])){
        $_SESSION['cart_'.(int)$_GET['delete']]='0';
        header('Location: index.php');
    }

    function products(){
        $get = mysql_query("SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC");
        if(mysql_num_rows($get) == 0){
            echo "There are no products to display.";
        }
        else{
            while($get_row = mysql_fetch_assoc($get)){
                echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />$'.$get_row['price'].' <a href="cart.php?add='.$get_row['id'].'">Add</a></p>';
            }
        }
    }

    function cart(){
        foreach($_SESSION as $name => $value){
            if($value>0){
                if(substr($name, 0, 5)=='cart_'){
                    $id = substr($name, 5, strlen($name)-5);
                    $get = mysql_query("SELECT id, name, price FROM products WHERE id='$id'");
                    while($get_row = mysql_fetch_assoc($get)){
                        $sub = $get_row['price']*$value;
                        echo $get_row['name'].' x '.$value.' @ $'.number_format($get_row['price'], 2).' = $'.$sub.' <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?delete='.$id.'">[Delete]</a>';
                    }
                }
                $total += $sub; 
            }
        }
        echo '<br />'.$total;
    }

    ?>
</body>

提前感谢您的帮助。在不久的将来,我可能需要更多帮助。

【问题讨论】:

标签: php indexing


【解决方案1】:

在你的函数 cart() 中:

首先声明变量$total

例如$total = 0 ; 然后开始增加它@9​​87654323@

【讨论】:

    【解决方案2】:

    代码第一次尝试做$total+=$sub$total没有定义。

    你需要在cart()函数的顶部设置$total

    function cart(){
        $total = 0;
        /// rest of code
    }
    

    【讨论】:

    • 我认为这里的问题是它超出了范围。
    【解决方案3】:
    <?php
    include('inc/connect.php');
    session_start();
    ?>
    <html>
    <head>
        <title>Cart</title>
        <link rel='stylesheet' href='css/main.css' />
    </head>
    <body>
        <?php
        $page = 'index.php';
    
        if(isset($_GET['add'])){
            $add_id = $_GET['add'];
            $quantity = mysql_query("SELECT id, quantity FROM products WHERE id='$add_id'");
            while($quantity_row = mysql_fetch_assoc($quantity)){
                if($quantity_row['quantity'] !=@$_SESSION['cart_'.$add_id]){
                    @$_SESSION['cart_'.$_GET['add']]+='1';
                    header('Location: index.php');
                }
                else{
                    header('Location: index.php?err=max');
                }
            }
    
        }
    
        if(isset($_GET['remove'])){
            $_SESSION['cart_'.(int)$_GET['remove']]--;
            header("Location: index.php");
        }
    
        if(isset($_GET['delete'])){
            $_SESSION['cart_'.(int)$_GET['delete']]='0';
            header('Location: index.php');
        }
    
        function products(){
            $get = mysql_query("SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC");
            if(mysql_num_rows($get) == 0){
                echo "There are no products to display.";
            }
            else{
                while($get_row = mysql_fetch_assoc($get)){
                    echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />$'.$get_row['price'].' <a href="cart.php?add='.$get_row['id'].'">Add</a></p>';
                }
            }
        }
    
        function cart(){
        $total = 0;
            foreach($_SESSION as $name => $value){
                if($value>0){
                    if(substr($name, 0, 5)=='cart_'){
                        $id = substr($name, 5, strlen($name)-5);
                        $get = mysql_query("SELECT id, name, price FROM products WHERE id='$id'");
                        while($get_row = mysql_fetch_assoc($get)){
                            $sub = $get_row['price']*$value;
                            echo $get_row['name'].' x '.$value.' @ $'.number_format($get_row['price'], 2).' = $'.$sub.' <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?delete='.$id.'">[Delete]</a>';
                        }
                    }
                    $total += $sub; 
                }
            }
            echo '<br />'.$total;
        }
    
        ?>
    </body>
    

    为您修复了代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多