给你个类。估计发上去中文注释又没有了。如果没有了来信要。[email protected]又说太上,分成两个帖子了。<?php 
//&para;¨&Ograve;&aring;±&frac34;&Icirc;&Auml;&frac14;&thorn;&sup3;&pound;&Aacute;&iquest; 
define("_CART_INC_" , "exists") ; class shoppingcart 
{   var $SortCount;            //&Eacute;&Igrave;&AElig;·&Ouml;&Ouml;&Agrave;à&Ecirc;&yacute; 
  var $TotalCost;            //&Eacute;&Igrave;&AElig;·×&Uuml;&frac14;&Ucirc;&Ouml;&micro;   var $Id;                   //&Atilde;&iquest;&Agrave;à&Eacute;&Igrave;&AElig;·&micro;&Auml;ID&pound;¨&Ecirc;&yacute;×é&pound;&copy; 
  var $Name;                 //&Atilde;&iquest;&Agrave;à&Eacute;&Igrave;&AElig;·&micro;&Auml;&Atilde;&ucirc;&sup3;&AElig;&pound;¨&Ecirc;&yacute;×é&pound;&copy; 
  var $Price;                //&Atilde;&iquest;&Agrave;à&Eacute;&Igrave;&AElig;·&micro;&Auml;&frac14;&Ucirc;&cedil;&ntilde;&pound;¨&Ecirc;&yacute;×é&pound;&copy; 
  var $Discount;             //&Eacute;&Igrave;&AElig;·&micro;&Auml;&Otilde;&Ucirc;&iquest;&Ucirc;&pound;¨&Ecirc;&yacute;×é&pound;&copy; 
  var $GoodPrice ;           //&Eacute;&Igrave;&AElig;·&micro;&Auml;&Oacute;&Aring;&raquo;&Yacute;&frac14;&Ucirc;&cedil;&ntilde;&pound;¨&Ecirc;&yacute;×é&pound;&copy; 
  var $Count;                //&Atilde;&iquest;&Agrave;à&Eacute;&Igrave;&AElig;·&micro;&Auml;&frac14;&thorn;&Ecirc;&yacute;&pound;¨&Ecirc;&yacute;×é&pound;&copy; 
  var $MaxCount ;            //&Eacute;&Igrave;&AElig;·&Iuml;&THORN;&Aacute;&iquest;&pound;¨&Ecirc;&yacute;×é&pound;&copy;   //******&sup1;&sup1;&Ocirc;ì&ordm;&macr;&Ecirc;&yacute; 
  function TCart() 
  { 
   $this->SortCount=0;    session_start(); //&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;&Ograve;&raquo;&cedil;&ouml;session 
   session_register('sId'); 
   session_register('sName'); 
   session_register('sPrice'); 
   session_register('sDiscount'); 
   session_register('sGoodPrice') ; 
   session_register('sCount') ; 
   session_register('sMaxCount') ;    $this->Update(); 
   $this->Calculate(); 
  }   //********&Euml;&frac12;&Oacute;&ETH;&pound;&not;&cedil;ù&frac34;&Yacute;session&micro;&Auml;&Ouml;&micro;&cedil;ü&ETH;&Acirc;&Agrave;à&Ouml;&ETH;&Iuml;à&Oacute;&brvbar;&Ecirc;&yacute;&frac34;&Yacute; 
  function Update() 
  { 
    global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice;    if(!isset($sId) or !isset($sName) or !isset($sPrice) 
      or !isset($sDiscount) or !isset($sMaxCount) 
      or !isset($sGoodPrice) or !isset($sCount)) return;    $this->Id        =$sId; 
   $this->Name      =$sName; 
   $this->Price     =$sPrice; 
   $this->Count     =$sCount; 
   $this->Discount  = $sDiscount ; 
   $this->GoodPrice = $sGoodPrice ; 
   $this->MaxCount  = $sMaxCount ;    //&frac14;&AElig;&Euml;&atilde;&Eacute;&Igrave;&AElig;·×&Uuml;&Ecirc;&yacute; 
   $this->SortCount=count($sId);   }   //********&Euml;&frac12;&Oacute;&ETH;&pound;&not;&cedil;ù&frac34;&Yacute;&ETH;&Acirc;&micro;&Auml;&Ecirc;&yacute;&frac34;&Yacute;&frac14;&AElig;&Euml;&atilde;&Atilde;&iquest;&Agrave;à&Eacute;&Igrave;&AElig;·&micro;&Auml;&frac14;&Ucirc;&Ouml;&micro;&frac14;°&Egrave;&laquo;&sup2;&iquest;&Eacute;&Igrave;&AElig;·&micro;&Auml;×&Uuml;&frac14;&Ucirc; 
  function Calculate() 
  { 
   for($i=0;$i<$this->SortCount;$i++) 
   { 
     /*&frac14;&AElig;&Euml;&atilde;&Atilde;&iquest;&frac14;&thorn;&Eacute;&Igrave;&AElig;·&micro;&Auml;&frac14;&Ucirc;&Ouml;&micro;&pound;&not;&Egrave;&ccedil;&sup1;&ucirc;&Otilde;&Ucirc;&iquest;&Ucirc;&Ecirc;&Ccedil;0 &pound;&not;&Ocirc;ò&Icirc;&ordf;&Oacute;&Aring;&raquo;&Yacute;&frac14;&Ucirc;&cedil;&ntilde;*/ 
     $GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice : 
                   ceil($this->Price[$i] * $this->Discount[$i])/100 ); 
     $this->TotalCost += $GiftPrice * $this->Count[$i] ; 
   } 
  }   //********&Euml;&frac12;&Oacute;&ETH;&pound;&not;&Eacute;&frac34;&sup3;&yacute;&Eacute;&Igrave;&AElig;·&micro;&Auml;&Ecirc;&yacute;×é
  function delmember($p_array, $id) 
  { 
      $size = count($p_array); 
      for($i = 0; $i < $size - $id - 1; $i ++) 
      { 
          $p_array[$id + $i] = $p_array[$id + $i + 1]; 
      } 
      unset($p_array[$size - 1]); 
  }
  //**************&Ograve;&Ocirc;&Iuml;&Acirc;&Icirc;&ordf;&frac12;&Oacute;&iquest;&Uacute;&ordm;&macr;&Ecirc;&yacute;   //*** &frac14;&Oacute;&Ograve;&raquo;&frac14;&thorn;&Eacute;&Igrave;&AElig;· 
  // &Aring;&ETH;&para;&Iuml;&Ecirc;&Ccedil;·&ntilde;&Agrave;&para;&Ouml;&ETH;&Ograve;&Ntilde;&Oacute;&ETH;&pound;&not;&Egrave;&ccedil;&Oacute;&ETH;&pound;&not;&frac14;&Oacute;count&pound;&not;·&ntilde;&Ocirc;ò&frac14;&Oacute;&Ograve;&raquo;&cedil;&ouml;&ETH;&Acirc;&Eacute;&Igrave;&AElig;· 
  //&Ecirc;×&Iuml;&Egrave;&para;&frac14;&Ecirc;&Ccedil;&cedil;&Auml;session&micro;&Auml;&Ouml;&micro;&pound;&not;&Egrave;&raquo;&ordm;ó&Ocirc;&Ugrave;&micro;÷&Oacute;&Atilde;update() and calculate()&Agrave;&acute;&cedil;ü&ETH;&Acirc;&sup3;&Eacute;&Ocirc;±±&auml;&Aacute;&iquest; 
  function Add($a_ID , $a_Name , $a_Price , $a_Discount , 
               $a_GoodPrice , $a_MaxCount , $a_Count) 
  { 
   global $sId , $sName , $sCount , $sPrice , $sDiscount , 
          $sGoodPrice , $sMaxCount ;    $k=count($sId); 
   for ($i=0; $i<$k; $i++) 
   { //&Iuml;&Egrave;&Otilde;&Ograve;&Ograve;&raquo;&Iuml;&Acirc;&Ecirc;&Ccedil;·&ntilde;&Ograve;&Ntilde;&frac34;&shy;&frac14;&Oacute;&Egrave;&euml;&Aacute;&Euml;&Otilde;&acirc;&Ouml;&Ouml;&Eacute;&Igrave;&AElig;· 
     if($sId[$i]==$a_ID) 
     { 
      $sCount[$i] += $a_Count ; 
      break; 
     } 
   } 
   if($i >= $k) 
   { //&Atilde;&raquo;&Oacute;&ETH;&Ocirc;ò&frac14;&Oacute;&Ograve;&raquo;&cedil;&ouml;&ETH;&Acirc;&Eacute;&Igrave;&AElig;·&Ouml;&Ouml;&Agrave;à 
    $sId[]        = $a_ID; 
    $sName[]      = $a_Name; 
    $sPrice[]     = $a_Price; 
    $sCount[]     = $a_Count; 
    $sGoodPrice[] = $a_GoodPrice ; 
    $sDiscount[]  = $a_Discount ; 
    $sMaxCount[]  = $a_MaxCount ; 
   }    $this->Update(); //&cedil;ü&ETH;&Acirc;&Ograve;&raquo;&Iuml;&Acirc;&Agrave;à&micro;&Auml;&sup3;&Eacute;&Ocirc;±&Ecirc;&yacute;&frac34;&Yacute; 
   $this->Calculate(); 
  } 

解决方案 »

  1.   

    //&Ograve;&AElig;&Egrave;&yen;&Ograve;&raquo;&frac14;&thorn;&Eacute;&Igrave;&AElig;· 
      function Remove($a_ID) 
      { 
       global $sId , $sName , $sCount , $sPrice , $sDiscount , 
              $sGoodPrice , $sMaxCount ;    $k = count($sId); 
       for($i=0; $i < $k; $i++) 
       { 
         if($sId[$i] == $a_ID) 
         { 
           $sCount[$i] = 0 ;
       $this->delmember($sId,$i);
       $this->delmember($sName,$i);
       $this->delmember($sPrice,$i);
       $this->delmember($sCount,$i);
       $this->delmember($sGoodPrice,$i);
       $this->delmember($sDiscount,$i);
       $this->delmember($sMaxCount,$i);
       $this->SortCount=count($sId);
    //    echo count($sId);
       $this->Update(); 
       $this->Calculate(); 
           break; 
         } 
       }   }   //&cedil;&Auml;±&auml;&Eacute;&Igrave;&AElig;·&micro;&Auml;&cedil;&ouml;&Ecirc;&yacute; 
      function ModifyCount($a_i,$a_Count) 
      { 
       global $sCount;    $sCount[$a_i] = $a_Count ; 
       $this->Update(); 
       $this->Calculate(); 
      } 
      /*************************** 
      &Ccedil;&aring;&iquest;&Otilde;&Euml;ù&Oacute;&ETH;&micro;&Auml;&Eacute;&Igrave;&AElig;· 
      *****************************/ 
      function RemoveAll() 
      { 
       session_unregister('sId'); 
       session_unregister('sName'); 
       session_unregister('sPrice'); 
       session_unregister('sDiscount'); 
       session_unregister('sGoodPrice') ; 
       session_unregister('sCount') ; 
       session_unregister('sMaxCount') ; 
       $this->SortCount = 0 ; 
       $this->TotalCost = 0 ; 
      } 
      //&Ecirc;&Ccedil;·&ntilde;&Auml;&sup3;&frac14;&thorn;&Eacute;&Igrave;&AElig;·&Ograve;&Ntilde;&Ocirc;&Uacute;&Agrave;&para;&Auml;&Uacute;&pound;&not;&sup2;&Icirc;&Ecirc;&yacute;&Icirc;&ordf;&acute;&Euml;&Eacute;&Igrave;&AElig;·&micro;&Auml;ID 
      function Exists($a_ID) 
      { 
       for($i=0; $i<$this->SortCount; $i++) 
       { 
         if($this->Id[$i]==$a_ID) return TRUE; 
       } 
       return FALSE; 
      }   //&Auml;&sup3;&frac14;&thorn;&Eacute;&Igrave;&AElig;·&Ocirc;&Uacute;&Agrave;&para;&Auml;&Uacute;&micro;&Auml;&Icirc;&raquo;&Ouml;&Atilde; 
      function IndexOf($a_ID) 
      { 
       for($i=0; $i<$this->SortCount; $i++) 
       { 
        if($this->Id[$i]==$a_ID) return $i; 
       } 
       return 0; 
      }   //&Egrave;&iexcl;&Ograve;&raquo;&frac14;&thorn;&Eacute;&Igrave;&AElig;·&micro;&Auml;&ETH;&Aring;&Iuml;&cent;&pound;&not;&Ouml;÷&Ograve;&ordf;&micro;&Auml;&sup1;¤×÷&ordm;&macr;&Ecirc;&yacute; 
      //·&micro;&raquo;&Oslash;&Ograve;&raquo;&cedil;&ouml;&sup1;&Oslash;&Aacute;&ordf;&Ecirc;&yacute;×é&pound;&not; 
      function Item($i) 
      { 
       $Result[id]        = $this->Id[$i]; 
       $Result[name]      = $this->Name[$i]; 
       $Result[price]     = $this->Price[$i]; 
       $Result[count]     = $this->Count[$i]; 
       $Result[discount]  = $this->Discount[$i] ; 
       $Result[goodprice] = $this->GoodPrice[$i] ; 
       $Result[maxcount]  = $this->MaxCount[$i] ; 
       return $Result; 
      }   //&Egrave;&iexcl;×&Uuml;&micro;&Auml;&Eacute;&Igrave;&AElig;·&Ouml;&Ouml;&Agrave;à&Ecirc;&yacute; 
      function CartCount() 
      { 
       return $this->SortCount; 
      }   //&Egrave;&iexcl;×&Uuml;&micro;&Auml;&Eacute;&Igrave;&AElig;·&frac14;&Ucirc;&Ouml;&micro; 
      function GetTotalCost() 
      { 
       return $this->TotalCost; 
      } 
    }
    ?>
      

  2.   

    http://www.phpbuilder.com/columns/evert20000816.php3
    这里有一篇文章专门讲这个,不过是英文的.
    在<php高级编程>附录里,有该文的翻译版.
      

  3.   

    这篇文章的中文版在:
    http://phpuser.com/articles_and_tutorials/article.php?id=87
    http://phpuser.com/articles_and_tutorials/article.php?id=88
      

  4.   

    你说的这篇我以前看过。
    有写好的吗?我想要份现成的。
    有修改商品数量,删除商品,计算价格,等等。功能全一些。
    就和现在一般的网上商城一样的功能。
    其实我也不是懒,....只是觉得麻烦。
    谁要是有写好的,发我一份吧,就省事了。我一定给他100分的。[email protected]
      

  5.   

    amtd() 兄,
    谢了!!!
      

  6.   

    darzui(牛肉饭)兄,分你10分,不介意吧。