一般用SESSION实现。用一张表来存贮用户的操作。中间加上响应时间的字段,这样可以在用户非正常退出的时候用程序将其删除

解决方案 »

  1.   

    看看我的这个类,对你有用处。请大家一起拓展它。这个不只适合买书。可以买任何东西。
    <?
    //author:bombshell
    //date:2003-01-01
    //email:[email protected]
    //欢迎大家完善拓展,但请保留版权。
    //如果您有完善、拓展请发一份到我的信箱,谢谢!
    define("_CART_INC","exists");
    //借阅车类
    class BCart
    {
     var $SortCount;//书的种类数
     var $TotalCost;//书总价值
     var $Id = Array();//书的唯一编号(数组)
     var $DelId = Array();//要删除的id号(数组)
     var $Bcount = Array(); //数量(数组)
     var $Price = Array();//书的单价(数组)
    // var $LastId = Array();//最后一个加到购物车中的物品id
    /*--构造函数--*/
    function BCart()
    {
     $this->SortCount = 0;
     session_start();//初始化一个session
     $this->Update();
     $this->Calculate();
    }
    /*--根据session的值更新类中的响应数据--*/
    function Update()
    {
     if(!isset($_SESSION['sId']) or !isset($_SESSION['sBcount']) or !isset($_SESSION['sPrice']))
     return;
     $this->Id = $_SESSION['sId'];
     $this->Bcount = $_SESSION['sBcount'];
     $this->Price = $_SESSION['sPrice'];
     $this->SortCount = count($_SESSION['sId']);
     //$this->DelId = $_SESSION['sDelId'];}
    /*--计算书的总价值--*/
    function Calculate()
    {
       for($i=0;$i<$this->SortCount;$i++)
       {
         $this->TotalCost += sprintf("%0.2f",$this->Price[$i] * $this->Bcount[$i]);
       }
    }
    /*--加一件商品--*/
    /*用户数据接口,记录商品的ID和数量*/
    function Add($a_Id,$a_Count,$a_Price)
    {
     $k = count($_SESSION['sId']);
     for($i=0;$i<$k;$i++)
     {
       //检查是否已经加入了该书
      if($_SESSION['sId'][$i] == $a_Id)
      {
        $_SESSION['sBcount'][$i] += $a_Count;
        break;
      }
     }
     if($i >= $k)
      {
      //如果没有则加入该书
       $_SESSION['sId'][] = $a_Id;
       $_SESSION['sBcount'][] = $a_Count;
       $_SESSION['sPrice'][] = $a_Price;
      } $this->Update(); //更新一下类成员数据
     $this->Calculate();
    }
    /*--删除一本书--*/
    function Remove($a_id)
    {
      for($i=0; $i < count($_SESSION['sId']); $i++)
      {
        if($_SESSION['sId'][$i] == $a_id)
        {
          $_SESSION['sId'][$i] = 0;
          $_SESSION['sBcount'][$i] = 0;
          $_SESSION['sPrice'][$i] = 0;
          break;
        }
      }$this->Update();
    $this->Calculate();
    return true;
    }
    /*--记录选中要删除的书--*/
    function Reg_Selected($a_DelId)
    {
      $k = count($_SESSION['sDelId']);
      $_SESSION['sDelId'][$k] = $a_DelId;
    }/*--删除选中的书--*/
    function Del_Selected()
    {
      $j = count($_SESSION['sDelId']);
      for($i=0;$i<$j;$i++)
      {
       for($x=0;$x<count($_SESSION['sId']);$x++)
       {
        if($_SESSION['sDelId'][$i] == $_SESSION['sId'][$x])
        {
           $_SESSION['sId'][$x] = 0;
           $_SESSION['sBcount'][$i] = 0;
           $_SESSION['sPrice'][$i] = 0;
        }
      }
    }
    unset($_SESSION['sDelId']);
    $this->Update();
    $this->Calculate();
    return true;
    }/*--改变书的数量--*/
    function ModifyCount($a_i,$a_Count)
    {
     $_SESSION['sBcount'][$a_i] = $a_Count;
     $this->Update();
     $this->Calculate();
     return true;
    }/*--清空所有书目--*/
    function RemoveAll()
    {
     unset($_SESSION['sId']);
     unset($_SESSION['sBcount']);
     unset($_SESSION['sPrice']);
     $this->SortCount = 0;
     $this->TotalCost = 0 ;
    }
    /*--访问每本书的数量--*/
    function vist_count($i)
    {
     return $this->Bcount[$i];
    }
    /*--判断该书是否已经存在--*/
    function Exists($a_id)
    {
      for($i=0; $i<$this->SortCount; $i++)
      {
        if($this->Id[$i]==$a_id)
        return TRUE;
      }
    return FALSE;
    }
    /*--得到书在篮内的位置--*/
    function IndexOf()
    {
     for($i=0; $i<$this->SortCount; $i++)
      {
       if($this->Id[$i]==$id)
       return $i;
      }
    return 0;
    }
    /*--取一本书的ID--*/
    function Item($i)
    {
      //return $this->Id[$i];
      $_result['id'] = $this->Id[$i];
      $_result['bcount'] = $this->Bcount[$i];
      $_result['price'] = $this->Price[$i];
      return $_result;
    }
    //取出书的种类数
    function CartCount()
    {
    return $this->SortCount;
    }
    //得到一种书的数量
    function ShowBcount()
    {
     $k = count($_SESSION['sBcount']);
     return $_SESSION['sBcount'][$k-1];
    }
    //的到书的总价值
    function GetTotalCost()
    {
      return $this->TotalCost;
    }}
    ?>
      

  2.   

    //我的购物车的模型 有抄袭别人的嫌疑,呵呵
    <?php
      class cart
      {
      
       function cart()  //初始化cart
       {
      
       }
      
       function check_items($tables, $session, $product)//查看购物车里的商品数量
       {
         $query = "SELECT * FROM $table WHERE session='$session' AND product='$product' ";
          $result = mysql_query($query);
      
          if(!$result)
            return 0;
      
          $numRows = mysql_num_rows($result);
      
          if(0 == $numRows)
            return 0;
          else 
          {
            $row = mysql_fetch_object($result);
            return $row->quantity;
          }  
       }
      
       function add_items($table, $session, $product, $quantity)//添加商品
       {
       $qty = $this->check_item($table, $session, $product);
      
       if(0 == $qty) 
       {
       $query = "INSERT INTO $table (session, product, quantity) VALUES ";
       $query .= "('$session', '$product', '$quantity') ";
       mysql_query($query) or die(mysql_error());
       }
          else 
        {
        $quantity += $qty;
       $query = "UPDATE $table SET quantity='$quantity' WHERE session='$session' AND ";
       $query .= "product='$product' ";
       mysql_query($query) or die(mysql_error());
       } 
       }
      
       function delete_items($table, $session, $product)//删除商品
       {
         $query = "DELETE FROM $table WHERE session='$session' AND product='$product' ";
          mysql_query($query) or die(mysql_error()); 
       }
      
       function modify_quantity($table, $session, $product, $quantity))//修改商品数量
       {
         $query = "UPDATE $table SET quantity='$quantity' WHERE session='$session' ";
          $query .= "AND product='$product' ";
          mysql_query($query); 
       }
      
       function clear_cart($table, $session)//清除购物车中的商品
       {
         $query = "DELETE FROM $table WHERE session='$session' ";
          mysql_query($query) or die(mysql_error()); 
       }
      
       function cart_total($table, $session)//统计购物车里的商品价格
       {
         $query = "SELECT * FROM $table WHERE session='$session' ";
         
          $result = mysql_query($query);
          if(mysql_num_rows($result) > 0) 
          {
             while($row = mysql_fetch_object($result))
             {
               $query = "SELECT price FROM inventory WHERE product='$row->product' ";
               $invResult = mysql_query($query);
               $row_price = mysql_fetch_object($invResult);
               $total += ($row_price->price * $row->quantity);
             }
          }
          
          return $total;  
       }
      
       function display_contents($table, $session)//显示订单内容
       {
         $count = 0;
       $query = "SELECT * FROM $table WHERE session='$session' ORDER BY id ";
       $result = mysql_query($query) or die(mysql_error());
      
       while($row = mysql_fetch_object($result)) 
       {
       $query = "SELECT * FROM inventory WHERE product='$row->product' ";
       $result_inv = mysql_query($query);
       $row_inventory = mysql_fetch_object($result_inv);
       $contents["product"][$count] = $row_inventory->product;
       $contents["price"][$count] = $row_inventory->price;
       $contents["quantity"][$count] = $row->quantity;
       $contents["total"][$count] = ($row_inventory->price * $row->quantity);
       $contents["description"][$count] = $row_inventory->description;
       $count++; 
       }
      
       $total = $this->cart_total($table, $session);
       $contents["final"] = $total;
      
       return $contents; 
       }
      
       function num_items()  //分类的数量
       {
         $query = "SELECT * FROM $table WHERE session='$session' ";
          $result = mysql_query($query);
       $num_rows = mysql_num_rows($result);
       return $num_rows; 
       }
      
       function quant_items()//显示订单里的商品情况
       {
       $quant = 0;
       $query = "SELECT * FROM $table WHERE session='$session' ";
      $result = mysql_query($query);
       while($row = mysql_fetch_object($result)) 
       {
       $quant += $row->quantity;
       }
       return $quant; 
       }
      }
    ?>