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>