shoppingcart中未定义的变量消息


Undefined variable msg in shoppingcart

shoppingcart.php 中未定义变量msg的问题

我收到这个错误注意:未定义的变量:在D:''wamp''www''project''shoppingcart''shoppigcart.php第64行的msg。msg变量在代码中声明。但为什么它会出错!

错误屏幕截图

include("includes/db.php");
include("includes/functions.php");
//if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
    if(isset($_REQUEST['command']) && $_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
    remove_product($_REQUEST['pid']);
}
else if(isset($_REQUEST['command'])=='clear'){
    unset($_SESSION['cart']);
}
else if(isset($_REQUEST['command'])=='update'){
    $max=count($_SESSION['cart']);
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=intval($_REQUEST['product'.$pid]);
        if($q>0 && $q<=999){
            $_SESSION['cart'][$i]['qty']=$q;
        }
        else{
            $msg='Some proudcts not updated!, quantity must be a number between 1 and 999';
        }
    }
}

2) 此处使用的消息变量

<div style="color:#F00"><?php echo $msg ?></div>

3) cart变量错误以及未定义的

<?php
        if(is_array($_SESSION['cart'])){
            echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td><td>Options</td></tr>';
            $max=count($_SESSION['cart']);
            for($i=0;$i<$max;$i++){
                $pid=$_SESSION['cart'][$i]['productid'];
                $q=$_SESSION['cart'][$i]['qty'];
                $pname=get_product_name($pid);
                if($q==0) continue;
        ?>

您可以使用<div style="color:#F00"><?php echo isset($msg) ? $msg : '' ; ?></div>

$msg最初没有在任何地方定义。在包含文件之后使用$msg = '';定义变量,使其始终可用。

include("includes/db.php");
include("includes/functions.php");
$msg = ''; // <-- Define here
//if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
    if(isset($_REQUEST['command']) && $_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
    remove_product($_REQUEST['pid']);
}
else if(isset($_REQUEST['command'])=='clear'){
    unset($_SESSION['cart']);
}
else if(isset($_REQUEST['command'])=='update'){
    $max=count($_SESSION['cart']);
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=intval($_REQUEST['product'.$pid]);
        if($q>0 && $q<=999){
            $_SESSION['cart'][$i]['qty']=$q;
        }
        else{
            $msg='Some proudcts not updated!, quantity must be a number between 1 and 999';
        }
    }
}

之所以会发出此通知,是因为$msg在任何地方都没有定义。使用以下代码。

include("includes/db.php");
include("includes/functions.php");
// Declare $msg here
$msg = '';
//if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
    if(isset($_REQUEST['command']) && $_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
    remove_product($_REQUEST['pid']);
}
else if(isset($_REQUEST['command'])=='clear'){
    unset($_SESSION['cart']);
}
else if(isset($_REQUEST['command'])=='update'){
    $max=count($_SESSION['cart']);
    for($i=0;$i<$max;$i++){
        $pid=$_SESSION['cart'][$i]['productid'];
        $q=intval($_REQUEST['product'.$pid]);
        if($q>0 && $q<=999){
            $_SESSION['cart'][$i]['qty']=$q;
        }
        else{
            $msg='Some proudcts not updated!, quantity must be a number between 1 and 999';
        }
    }
}

看起来您正在尝试使用$msg,无论它是否存在,这就是错误的来源。试试这个:<div style="color:#F00"><?php if(isset($msg)){ echo $msg; } ?></div>