Title1

Title2

Title3

17. 商品類別、商品管理

http://campus-xoops.tn.edu.tw/modules/tad_book3/index.php?op=list_docs&tbsn=17

一、kind.php

  1. 複製 nav_m.php 成 kind.php
  2. 用 ctrl + h => nav_m.php 取代成 kind.php
  3. $TBL['kind']="nav_home";//分類  改成  $TBL['kind']="kind_prod";//分類
  4. 將 templates/admin/theme.html 其中的 nav_m 的部份複制,貼至新檔
  5. 將 nav_m.php 取代成 kind.php 、 選單 取代成 類別
  6. 然後再貼回 templates/admin/theme.html
  7. 後台選單 nav.php 增加一項
            <li><a href='kind.php'>商品類別管理</a></li>

     

  8. 處理取消「網址」、「外連」
    1. op_list()程式
    2. op_list 樣板
    3. op_form()、op_form樣板
    4. op_insert()
    5. op_show()、op_show樣板
    6. op_update()

二、增加商品資料表

  1. 商品展示資料表 結構
    
          CREATE TABLE `show_prod` (
            `sn` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'prod_sn',
            `kind` smallint(5) unsigned NOT NULL default 0 COMMENT '分類',
            `title` varchar(255) NOT NULL default '' COMMENT '名稱',
            `summary` text NOT NULL default '' COMMENT '摘要',
            `content` text NOT NULL default '' COMMENT '內容',
            `price` int(10) unsigned NOT NULL default 0 COMMENT '價格',
            `enable` enum('1','0') NOT NULL DEFAULT '1' COMMENT '狀態',
            `date` int(10) unsigned NOT NULL default 0 COMMENT '建立日期',
            `sort` smallint(5) unsigned NOT NULL default 0 COMMENT '排序',
            `counter` int(10) unsigned NOT NULL default 0 COMMENT '人氣',
            PRIMARY KEY (`sn`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

     

  2. 自動更新,update.php
    <?php
    require_once 'head.php';
    
    #整理傳入變數
    $op = isset($_REQUEST['op'])?$_REQUEST['op']:"";
    $sn = isset($_REQUEST['sn'])?intval($_REQUEST['sn']):"";
    
    #程式流程
    switch($op){
      #顯示單筆
      case "op_show":
        die($op);
      break;
      #更新
      default:
        $op="op_list";
        $msg=op_list();
    
        if($msg)
        {
          redirect_header("index.php",3000,"更新系統成功!!");
        } else
        {
          redirect_header("index.php",3000,"更新系統失敗!!");
        }
      break;
    }
    
    #將變數送至樣板引擎
    #op
    $smarty->assign("op", $op);
    /*
    $WEB['theme_name'] = "admin";
    WEB['title'] = "網站名稱";
    $WEB['file_name'] = basename ($_SERVER['PHP_SELF']);
    */
    #變數在head.php
    $smarty->assign("WEB", $WEB);
    
    #程式結尾
    $smarty->display('theme.html');
    
    #函數
    
    ########################################
    # 更新主程式
    ########################################
    function op_list()
    {
      global $mysqli;
      #檢查資料夾
      mk_dir(WEB_PATH."/uploads");
      mk_dir(WEB_PATH."/uploads/slider");
    
      //-------- 資料表 ------
      #檢查資料表(show_kind)
      if(!chk_isTable("show_kind")) go_update1();
      #檢查資料表(show_files)
      if(!chk_isTable("show_files")) go_update2();
      #檢查資料表(show_prod)
      if(!chk_isTable("show_prod")) go_update3();
      //-------- 資料表 end------
    
      //-------- 欄位 ------
      //if(!chk_isColumn("sn1","show_kind")) go_update3();
      //-------- 欄位 end------
      return true;
    }
    
    ########################################
    # 建立資料表 show_kind
    ########################################
    function go_update1()
    {
        global $mysqli;
        $sql="
          CREATE TABLE `show_kind` (
            `sn` smallint(5) unsigned not null auto_increment comment 'sn',
            `ofsn` smallint(5) unsigned not null default 0 comment '父類別',
            `kind` varchar(255) not null default 'nav_home' comment '分類',
            `title` varchar(255) not null  default '' comment '標題',
            `sort` smallint(5) unsigned not null default 0 comment '排序',
            `enable` enum('1','0') not null default '1' comment '狀態',
            `url` varchar(255) not null default '' comment '網址',
            `target` enum('0','1') not null default '0' comment '外連',
            `col_sn` int(10) unsigned not null default 0 comment 'col_sn',
            `content` text not null default '' comment '內容',
            PRIMARY KEY (`sn`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
        ";
    
        $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
        return true;
    }
    
    ########################################
    # 建立資料表show_files
    ########################################
    function go_update2()
    {
        global $mysqli;
        $sql="
          CREATE TABLE `show_files` (
            `sn` smallint(5) unsigned not null auto_increment comment 'sn',
            `col_name` varchar(255) not null default '' comment '欄位名稱',
            `col_sn` smallint(5) unsigned not null default 0 comment '欄位編號',
            `sort` smallint(5) unsigned not null default 0 comment '排序',
            `kind` enum('img','file') not null default 'img' comment '檔案種類',
            `file_name` varchar(255) not null default '' comment '檔案名稱',
            `file_type` varchar(255) not null default '' comment '檔案類型',
            `file_size` int(10) unsigned not null default 0 comment '檔案大小',
            `description` text not null default '' comment '檔案說明',
            `counter` mediumint(8) unsigned not null default 0 comment '下載人次',
            `sub_dir` varchar(255) not null default '' comment '檔案子路徑',
            PRIMARY KEY (`sn`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
        ";//die($sql);
    
        $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
        return true;
    }
    
    
    ########################################
    # 建立資料表show_prod
    ########################################
    function go_update3()
    {
        global $mysqli;
        $sql="
          CREATE TABLE `show_prod` (
            `sn` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'prod_sn',
            `kind` smallint(5) unsigned NOT NULL default 0 COMMENT '分類',
            `title` varchar(255) NOT NULL default '' COMMENT '名稱',
            `summary` text NOT NULL default '' COMMENT '摘要',
            `content` text NOT NULL default '' COMMENT '內容',
            `price` int(10) unsigned NOT NULL default 0 COMMENT '價格',
            `enable` enum('1','0') NOT NULL DEFAULT '1' COMMENT '狀態',
            `date` int(10) unsigned NOT NULL default 0 COMMENT '建立日期',
            `sort` smallint(5) unsigned NOT NULL default 0 COMMENT '排序',
            `counter` int(10) unsigned NOT NULL default 0 COMMENT '人氣',
            PRIMARY KEY (`sn`)
          ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
        ";//die($sql);
    
        $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
        return true;
    }
    
    ########################################
    # 在資料表show_kind 增加一個 sn1 欄位
    ########################################
    // function go_update3()
    // {
    //     global $mysqli;
    //     $sql="ALTER TABLE `show_kind` ADD `sn1` smallint(5) unsigned NOT NULL default 0 comment 'sn1'";//die($sql);
    //     $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
    //     return true;
    // }
    
    ########################################
    # 檢查某欄位是否存在(欄名,資料表)
    ########################################
    function chk_isColumn($col_name="",$tbl_name="")
    {
        global $mysqli;
        if(!$col_name and $tbl_name)return;
        //SHOW COLUMNS FROM `show_kind` LIKE 'sn1'
        $sql    = "SHOW COLUMNS FROM `{$tbl_name}` LIKE '{$col_name}'";
        $result = $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
        if ($result->num_rows)return true; //欄位存在
        return false;//欄位不存在
    }
    
    ########################################
    # 檢查資料表是否存在(資料表)
    ########################################
    function chk_isTable($tbl_name="")
    {
        global $mysqli;
        if(!$tbl_name)return;
        $sql    = "SHOW TABLES LIKE '{$tbl_name}'";//die($sql);
    
        $result = $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
    
        if ($result->num_rows)return true; //欄位存在
        return false;//欄位不存在
    }