PHP簡単電子商取引プラットフォーム

6135 ワード

フレームワークの構築、共通の補助関数の追加
データベースの設計
バックグラウンド機能の実装
商品の分類
機能
商品分類の追加、商品分類の表示、商品分類の編集、商品分類の削除
ぶんせき
  • まず商品分類表があってこそ、
  • を削除することができる.
  • 商品分類は無線階層の分類がある可能性があるため、無限分類
  • を採用することができる.
  • 設計表は、少なくとも、商品分類ID(プライマリキーid)、商品名、親分類ID
  • を含む.
    商品分類の追加
    データ、商品名、親分類ID(ない場合は0)を挿入します.
    商品分類表示
    商品分類表のすべてのデータを検出し、木の構造を形成し、対応する情報を取り出す方法を定義すればよい.
    すべての商品を検出し、レベルをlevelでマークする
    
        //      ,        
        /**
         *@param $arr array     
         *@param $pid int           
         *@return array       
        */
        public function tree($arr,$pid=0,$level=0){
            static $tree = array();
            foreach ($arr as $v){
                if ($v['parent_id'] == $pid){
                    $v['level'] = $level;
                    $tree[] = $v;
                    $this->tree($arr,$v['cat_id'],$level+1);
                }
            }
            return $tree;
        }
    

    商品分類を直接多次元配列で示す
        //              (    )
        public function childList($arr,$pid=0){
            $list = array();
            foreach ($arr as $v){
                if ($v['parent_id'] == $pid){
                    //     ,                    
                    $child = $this->childList($arr,$v['cat_id']);
                    //             
                    $v['child'] = $child;
                    $list[] = $v;
                }
            }
            return $list;
        }
    

    商品分類の編集
    編集者であり,現在の商品分類およびそのサブ商品分類を上位とすることはできず,現在の編集ノードのすべてのサブノードのプライマリ・キーを取得する必要がある.
        //      ,              id
        public function getSubIds($pid){
            $sql = "SELECT * FROM {$this->table}";
            $cats =  $this->db->getAll($sql);
            $cats = $this->tree($cats,$pid);
            $list = array();
            foreach ($cats as $cat){
                $list[] = $cat['cat_id'];
            }
            return $list;
        },
    
    

    商品分類の削除
    削除するには、サブノードがある場合は削除できないと判断し、スパムデータをできるだけ回避し、現在のノードのすべてのサブノードを取得する必要があります.
    商品の種類
    商品の種類を追加
    データベースの追加操作
    商品の種類を表示
    すべての商品タイプを取得
        //         
        public function getTypes(){
            $sql = "SELECT * FROM {$this->table} ORDER BY type_id";
            return $this->db->getAll($sql);
        }
    

    ページ別に商品タイプを取得
        //              
        public function getPageTypes($offset,$pagesize){
            $sql = "SELECT a.*,COUNT(b.attr_name) AS num FROM {$this->table} AS a 
                    LEFT JOIN cz_attribute AS b
                    ON a.type_id = b.type_id GROUP BY a.type_id ORDER BY type_id 
                    LIMIT $offset,$pagesize";
            return $this->db->getAll($sql);
        }
    

    商品の種類を編集
    商品の種類を削除
    商品属性(商品タイプの属性)
    ぶんせき
    設計表には少なくとも商品属性(メインキー)、商品タイプ、属性名があります.
    商品属性表示
    //          
        public function getAttrs($type_id){
            // $sql = "SELECT * FROM {$this->table} WHERE type_id = $type_id";
            $sql = "select a.*,b.type_name from cz_attribute as a inner join 
                    cz_goods_type as b on a.type_id = b.type_id 
                    where a.type_id = $type_id";
            return $this->db->getAll($sql);
        }
    
        //             
        public function getPageAttrs($type_id,$offset,$pagesize){
            $sql = "select a.*,b.type_name from cz_attribute as a inner join 
                    cz_goods_type as b on a.type_id = b.type_id 
                    where a.type_id = $type_id
                    limit $offset,$pagesize";
            return $this->db->getAll($sql);
        }
    
    //          ,     
        public function getAttrsForm($type_id){
            //            
            $sql = "select * from {$this->table} where type_id = $type_id";
            $attrs = $this->db->getAll($sql);
            $res = "";
            $res .= "";
            foreach ($attrs as $attr){
                $res .= "";
                $res .= "";
                $res .= "
    {$attr['attr_name']}"; $res .= ""; // attr_input_type , switch ($attr['attr_input_type']){ case 0: # $res .= ""; break; case 1: # $res .= ""; break; case 2: # $res .= "