Title1

Title2

Title3

14-4 自動更新

  1. 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_file)
      if(!chk_isTable("show_files")) go_update2();
      //-------- 資料表 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_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;//欄位不存在
    }

     

  2. function.php 增加一個建立資料夾的函數 
    
    #####################################################################################
    #  建立目錄
    #####################################################################################
    if(!function_exists("mk_dir")){
    function mk_dir($dir = "")
    {
      #若無目錄名稱秀出警告訊息
      if (empty($dir)) {
          return;
      }
    
      #若目錄不存在的話建立目錄
      if (!is_dir($dir)) {
        umask(000);
        //若建立失敗秀出警告訊息
        mkdir($dir, 0777);
      }
    }
    }

     

  3. 後台的導航增加選單
    
            <li><a href='update.php'>網站更新</a></li>
            <li><a href='../../mysql/adminer.php' target='_blank'>資料庫管理</a></li>

     


  4.