Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP刷新页面将变量重新初始化为0_Php - Fatal编程技术网

PHP刷新页面将变量重新初始化为0

PHP刷新页面将变量重新初始化为0,php,Php,我正在使用URL?action=add向购物车添加项目。我没有初始化变量$count,并且出现以下错误: Notice: Undefined index: count in C:\wamp\www\cart.php on line 31 Notice: Undefined index: count in C:\wamp\www\cart.php on line 32 我知道我需要定义$count变量。($count=0;)但我不希望每次用户向购物车添加新项目时,页面都会刷新,并将会话变量重置

我正在使用URL
?action=add
向购物车添加项目。我没有初始化变量
$count
,并且出现以下错误:

Notice: Undefined index: count in C:\wamp\www\cart.php on line 31

Notice: Undefined index: count in C:\wamp\www\cart.php on line 32
我知道我需要定义$count变量。($count=0;)但我不希望每次用户向购物车添加新项目时,页面都会刷新,并将会话变量重置为0。$count需要在下一页用作计数器。我该怎么做

这是我的案例代码:

switch($action) { 
    case "add":
        if (isset($_SESSION['cart'][$comic_id])) {
            $count=$_SESSION['count']; //LINE 31
            $_SESSION['count']++; //LINE 32
            $_SESSION['cart'][$comic_id]++;

        } else {
            $_SESSION['cart'][$comic_id] = 1;
            }
    break;  
添加if(!isset($\u会话['count'])后,$\u会话['count']=1

<?php 
if(!isset($_SESSION)) {
     session_start();
}
$total = 0;
$page = 'cart';

$dbname = "crystal_fusion";
$dbhost = "127.0.0.1";
$dbuser = "root";
$dbpwd = "";

$link = mysql_connect($dbhost, $dbuser, $dbpwd);

mysql_select_db($dbname);

if(isset($_GET['comic_id'])){
    $comic_id = $_GET['comic_id'];
} else {
    $comic_id = NULL;}

$action = $_GET['action'];

if($comic_id && !productExists($comic_id)) {
    die("We apologise, but we can't seem to find the comic you were looking for!!!");
}

if (!isset($_SESSION['count'])) $_SESSION['count'] = 1; //added as suggested - now output is correct when adding multiples of 1 item. However, the count is wrong if more than 1 item is added.

switch($action) {
    case "add":
        if (isset($_SESSION['cart'][$comic_id])) {
            $count=$_SESSION['count'];
            $_SESSION['count']++;
            $_SESSION['cart'][$comic_id]++;

        } else {
            $_SESSION['cart'][$comic_id] = 1;
            }
    break;  
    case "remove":
        if (isset($_SESSION['cart'][$comic_id])) {
            $_SESSION['cart'][$comic_id]--;} 
        if($_SESSION['cart'][$comic_id] == 0) unset($_SESSION['cart'][$comic_id]); 
    break;  
    case "empty":
        unset($_SESSION['cart']); 
        session_destroy();
    break;  
}

require('header.php');
require('sidebar.php');
if (isset($_SESSION['cart'][$comic_id])){

    echo "<table border=\"0\" padding=\"10\" width=\"80%\">";
    echo "<td colspan=\"1\" align=\"left\"><a href=\"title.php\">Continue Shopping</a></div>";
    echo "<td colspan=\"6\" align=\"right\"><a href=\"$_SERVER[PHP_SELF]?action=empty\" onclick=\"return confirm('Crystal Fusion: Are you sure you wish to empty your cart?');\">Empty Cart</a></td>"; //empty cart link --Sam                      
    echo "<tr height=\"20px\">";
    echo "<tr height=\"20px\">";
    echo "<td align=center>Image</td><td align=center>Title</td><td align=center>Description</td><td colspan=3 align=center>Copies (+/-)</td><td align=center>Price</td>";
    echo "<tr height=\"20px\">";


    foreach($_SESSION['cart'] as $comic_id => $qty) {   

        $sql = sprintf("SELECT title, description, cost, image_thumbnail
                FROM comic 
                WHERE comic_id = %d;",$comic_id);

        $result = mysql_query($sql);

        if(mysql_num_rows($result) > 0) {

            list($name, $description, $price, $image_thumbnail) = mysql_fetch_row($result);



            $cost = $price * $qty;  
            $total = $total + $cost; 

            $cost = number_format($cost,2);
            $total = number_format($total,2);
            $description =  substr($description, 0, 250);

            echo "<br><tr>";
            echo "<td width=\"10px\" align=\"center\"><img height=100 align=center src=\"$image_thumbnail\">";
            echo "<td align=\"center\">$name</td>";
            echo "<td width=\"40%\" align=\"center\">$description...<a href=comic_dyn.php?comic_id=$comic_id>More Info</td>";
            echo "<td width=\"30px\" align=\"center\"><a href=\"$_SERVER[PHP_SELF]?action=add&comic_id=$comic_id\">+<br></a><td align=\"center\">$qty <td width=\"20px\" align=\"center\"><a href=\"$_SERVER[PHP_SELF]?action=remove&comic_id=$comic_id\">-</a></td>";
            echo "<td align=\"right\">$$cost</td>";
            echo "</tr>";           
        }

    }

    echo "<br><tr><tr height=100px>";
    echo "<td><td><td colspan=\"4\" align=\"right\">Total:</td>";
    echo "<td width=\"60px\" align=\"right\">$$total</td>";
    echo "<tr><td colspan=\"7\" align=\"right\"><a href=\"checkout_html.php\">Proceed to Checkout</a>";
    echo "<tr height=\"50px\">";
    echo "</table>";
}else{

    echo "Your cart is currently empty.";
    echo "<br><br><td colspan=\"1\" align=\"left\"><a href=\"title.php\">Continue Shopping</a></div>";

}

$_SESSION['totnamqty'][]=$name . " " . $qty . " " . $price;

function productExists($comic_id) { 
        $sql = sprintf("SELECT * FROM comic WHERE comic_id = %d;", $comic_id);
    return mysql_num_rows(mysql_query($sql)) > 0;
    }
?>
检查以下各项:
  • 您必须使用
    session_start()初始化会话作为第一个
  • 在分配或执行som操作之前,请确保
    $\u会话['count']
    存在并已初始化
  • 检查以下各项:
  • 您必须使用
    session_start()初始化会话作为第一个
  • 在分配或执行som操作之前,请确保
    $\u会话['count']
    存在并已初始化

  • 在使用某处
    $\u会话['count']
    之前,必须对其进行初始化。我认为您没有这样做,这就是您收到通知的原因。

    在使用某处
    $\u会话['count']
    之前,您必须初始化它。我认为您没有这样做,这就是您收到通知的原因。

    有关更多会话信息,请参阅以下链接:

    (我会发布PHP.net手册页面,但我是新手,只能发布2个链接)

    此外,您可能还希望转换为使用$\u POST变量,而不是通过URL传递键值对:


    有关更多会话信息,请参阅以下链接:

    (我会发布PHP.net手册页面,但我是新手,只能发布2个链接)

    此外,您可能还希望转换为使用$\u POST变量,而不是通过URL传递键值对:



    是会话\u启动已初始化。如果我将$_SESSION['count']=0;然后每次刷新页面时,计数将设置为0。我不希望发生这种情况。
    $count
    $\u SESSION
    变量的初始化?有什么方法可以解决这个问题吗?一种方法是,如果没有任何问题,显示完整的PHP代码。:)这样我们就可以看到你哪里出了问题。:)是会话启动已初始化。如果我将$_SESSION['count']=0;然后每次刷新页面时,计数将设置为0。我不希望发生这种情况。
    $count
    $\u SESSION
    变量的初始化?有什么方法可以解决这个问题吗?一种方法是,如果没有任何问题,显示完整的PHP代码。:)这样我们就可以看到你哪里出了问题。:)是的,但是如果我将其初始化为0,每次刷新页面时计数都将重置为0。@Sam:所以,只有在尚未设置的情况下才进行设置<代码>如果(!isset($\u会话['count'])$\u会话['count']=0初始化$_会话['count']=1如果用户处于登录状态如果我的答案有用,请单击我的答案作为正确答案,并请向上投票我的答案。。谢谢你,伙计…检查一下为什么计数在增加。。。或者,如果您不想增加计数并使其保持常量,请将其定义为常量,但如果我将其初始化为0,则每次刷新页面时,计数都将重置为0。@Sam:因此,仅当尚未设置时才进行设置<代码>如果(!isset($\u会话['count'])$\u会话['count']=0初始化$_会话['count']=1如果用户处于登录状态如果我的答案有用,请单击我的答案作为正确答案,并请向上投票我的答案。。谢谢你,伙计…检查一下为什么计数在增加。。。或者,如果您不想增加计数并使其保持不变,请将其定义为常量