好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

实用的php购物车程序 - php高级应用

实用的php购物车程序

以前有用过一个感觉不错,不过看了这个感觉也很好,所以介绍给需要的朋友参考一下,实例代码如下:

<?php  //调用实例   require_once   'cart.class.php' ;  session_start();  if (!isset( $_SESSION [ 'cart' ])) {    $_SESSION [ 'cart' ] =  new  Cart;  }  $cart  =&  $_SESSION [ 'cart' ];    if ( ( $_SERVER [ 'REQUEST_METHOD' ]== "POST" )&&( $_POST [ 'action' ]== 'add' ) ){    $p  =  $_POST [ 'p' ];    $items  =  $cart ->add( $p );  }  if ( ( $_GET [ 'action' ]== 'remove' )&&( $_GET [ 'key' ]!= "" ) ) {    $items  =  $cart ->remove( $_GET [ 'key' ]);  }    if ( ( $_SERVER [ 'REQUEST_METHOD' ]== "POST" )&&( $_POST [ 'action' ]== 'modi' ) ){    $key  =  $_POST [ 'key' ];    $value  =  $_POST [ 'value' ];    for ( $i =0; $i < count ( $key ); $i   ){     $items  =  $cart ->modi( $key [ $i ], $value [ $i ]);   }  }    $items  =  $cart ->getCart();  //打印   echo   "<table border=1>" ;  setlocale(LC_MONETARY,  'it_IT' );  foreach ( $items   as   $item ){    echo   "<tr><form method=" post " action=" tmp.php ">" ;    echo   "<td>ID:" . $item [ 'ID' ]. "<input type=hidden name=key[] value=" . $item [ 'ID' ]. ">" ;    echo   "<td>产品:" . $item [ 'name' ];    echo   "<td>单价:" . $item [ 'price' ];    echo   "<td><input type=text name=value[] value=" . $item [ 'count' ]. ">" ;     $sum  =  $item [ 'count' ]* $item [ 'price' ];    echo   "<td>合计:" . round ( $sum ,2);    echo   "<td><input type=button value='删除' onclick=" location= '?action=remove&key=".$item[' ID ']."' ">" ;  }  echo   "<input type=hidden name=action value=modi>" ;  echo   "<tr><td colspan=7><input type=submit />" ;  echo   "</td></form></tr></table>" ;      ?>  <hr>  <form method= "post"  action= "tmp.php" >  ID:<input type= "text"  name= "p[]"  />  品名:<input type= "text"  name= "p[]"  />  单价:<input type= "text"  name= "p[]"  />  数量:<input type= "text"  name= "p[]"  />  <input type=hidden name=action value=add>  <input type= "submit"  />  </form>        <?  /**    * Cart    *     * 购物车类    *     * @author  doodoo<pWtitle@yahoo.com.cn>    * @package     Cart    * @category    Cart    * @license     PHP License    * @access      public    * @version     $Revision: 1.10 $    */   Class Cart{      var   $cart ;    var   $totalCount ;  //商品总数量     var   $totalPrices ;  //商品总金额        /**        * Cart Constructor        *         * 类的构造函数,使购物车保持稳定的初始化状态         *         * @static         * @access  public         * @return  void   无返回值        * @param   void   无参数        */      function  Cart(){     $this ->totalCount = 0;     $this ->totalPrice = 0;     $this ->cart =  array ();   }      // }}}        // {{{ add($item)          /**    * 增加商品到当前购物车    *       * @access public       * @param  array $item 商品信息(一维数组:array(商品ID,商品名称,商品单价,商品数量))       * @return array   返回当前购物车内商品的数组       */     function  add( $item ){     if (! is_array ( $item )|| is_null ( $item ))  return   $this ->cart;     if (! is_numeric ( end ( $item ))||(! is_numeric (prev( $item )))) {      echo   "价格和数量必须是数字" ;      return   $this ->cart;    }    reset( $item );  //这一句是必须的,因为上面的判断已经移动了数组的指标      $key  = current( $item );     if ( $key == "" )  return   $this ->cart;     if ( $this ->_isExists( $key )){   //商品是否已经存在?        $this ->cart[ $key ][ 'count' ]  =  end ( $item );     return   $this ->cart;    }       $this ->cart[ $key ][ 'ID' ]  =  $key ;     $this ->cart[ $key ][ 'name' ] = next( $item );     $this ->cart[ $key ][ 'price' ] = next( $item );     $this ->cart[ $key ][ 'count' ] = next( $item );      return   $this ->cart;   }      // }}}        // {{{ add($item)          /**    * 从当前购物车中取出部分或全部商品    * 当 $key=="" 的时候,清空当前购物车    * 当 $key!=""&&$count=="" 的时候,从当前购物车中拣出商品ID号为 $key 的全部商品     * 当 $key!=""&&$count!="" 的时候,从当前购物车中拣出 $count个 商品ID号为 $key 的商品     *       * @access public       * @param  string $key 商品ID       * @return mixed   返回真假或当前购物车内商品的数组       */     function  remove( $key = "" , $count = "" ){     if ( $key == "" ) {      $this ->cart =  array ();      return  true;    }     if (! array_key_exists ( $key , $this ->cart))  return  false;     if ( $count == "" ){  //移去这一类商品      unset( $this ->cart[ $key ]);    } else {  //移去$count个商品       $this ->cart[ $key ][ 'count' ] -=  $count ;      if ( $this ->cart[ $key ][ 'count' ]<=0) unset( $this ->cart[ $key ]);    }     return   $this ->cart;   }      // }}}        // {{{ modi($key,$value)          /**    * 修改购物车内商品ID为 $key 的商品的数量为 $value    *       * @access public       * @param  string $key 商品ID       * @param  int $value 商品数量       * @return array  返回当前购物车内商品的数组;       */     function  modi( $key , $value ){     if (! $this ->_isExists( $key ))  return   $this ->cart();   //不存在此商品,直接返回      if ( $value <=0){      // value 太小,全部删除      unset( $this ->cart[ $key ]);      return   $this ->cart;    }     $this ->cart[ $key ][ 'count' ] =  $value ;     return   $this ->cart;   }           /**    * 返回当前购物车内商品的数组    *       * @access public       * @return array  返回当前购物车内商品的数组;       */     function  getCart(){     return   $this ->cart;   }      // }}}        // {{{ _isExists($key)          /**    * 判断当前购物车中是否存在商品ID号为$key的商品    *       * @access private       * @param  string $key 商品ID       * @return bool   true or false;       */        function  _isExists( $key )      {     if (isset( $this ->cart[ $key ])&&! empty empty ( $this ->cart[ $key ])&& array_key_exists ( $key , $this ->cart))      return  true;       return  false;      }      // }}}        // {{{ isEmpty()          /**    * 判断当前购物车是否为空,即没有任何商品    *       * @access public       * @return bool   true or false;       */     function  isEmpty(){     return  ! count ( $this ->cart);   } //开源代码phpfensi.com       // }}}        // {{{ _stat()          /**    * 取得部分统计信息    *       * @access private       * @return bool  true or false;       */     function  _stat(){     if ( $this ->isEmpty())  return  false;     foreach ( $this ->cart  as   $item ){      $this ->totalCount   = @ end ( $item );      $this ->totalPrices  = @prev( $item );    }     return  true;   }      // }}}        // {{{ totalPrices()          /**    * 取得当前购物车所有商品的总金额    *       * @access public       * @return float  返回金额;       */     function  totalPrices(){     if ( $this ->_stat())      return   $this ->totalPrices;    return  0;   }      // }}}        // {{{ isEmpty()          /**    * 取得当前购物车所有商品的总数量和    *       * @access public       * @return int ;       */     function  totalCount(){     if ( $this ->_stat())      return   $this ->totalCount;      return  0;   }      } //End Class Cart   ?> 

查看更多关于实用的php购物车程序 - php高级应用的详细内容...

  阅读:36次