Title1

Title2

Title3

1. 轉向

一、頁面轉向的方式

  1. HTML 的轉址方法
    <meta http-equiv="refresh" content="秒數;url=網址" />

     

  2. Javascript 的轉址方法
    <script>document.location.href="網址";</script>

     

  3. PHP 的轉址方法
    前提,前面不可以有輸出
        header('Location: 網址');
        exit;

     

二、什麼時候有轉向

  1. 寫入、更新、刪除資料庫時

三、程式架構

  1. 列表:將某個主表的欄位顯示在頁面上(重要的欄位),資料多時,會用到分頁,而每筆記錄的列表,會有「新增」、「編輯」、「刪除」、「瀏覽」.....
    由於列表有顯示畫面,所以會使用 smarty 樣板引擎

  2. 表單:當按下「新增」、「編輯」時,系統會顯示表單,來收集資料
    由於新增與編輯的架構是一樣的,不同的是預設值,編輯會從「資料庫」撈資料,新增則使用預定的值
    這裡如果是新手沒有概念如何處理,請依照需求,一個一個寫出來,換句話就是寫一個「新增表單」與一個「編輯表單」,經過幾個案子後,自然能看出關聯,進而將二個合而為一,節省日後程式維護的時間
    由於表單有顯示畫面,所以會使用 smarty 樣板引擎

  3. 顯示單筆
    ......
  4. 寫入資料庫:表單將資料送出時,這時就需要將資料寫入資料庫,動作執行完畢,就需轉向,不然畫面什麼都不動作,使用者不曉得是否有執行,而按「重整」鍵,造成系統重覆執行寫入的動作

四、轉去那裡

  1. 通常是「列表」,為什麼?這個留到上課再來解釋
  2. 佈局:
        # ---- 目前網址 ----
        $_SESSION['return_url'] = getCurrentUrl();

    getCurrentUrl():這是一個函數,用來擷取目前的網址
    $_SESSION['return_url']:$_SESSION[] 則是伺服端的全域變數,會一直存在到瀏覽器關閉為止

  3. 轉向:
    redirect_header($_SESSION['return_url'], 3, _BP_SUCCESS);

    這是我們自訂的函數,用來轉向,並通知使用者執行結果

五、程式流程

/*-----------流程區----------*/
switch ($op) {
  case "op_update_sort": //更新排序
    #強制關除錯
    ugm_module_debug_mode(0);
    echo op_update_sort();
    exit;

  case "op_update_enable"://更新狀態
    #強制關除錯
    ugm_module_debug_mode(0);
    echo op_update_enable();
    exit;  

  case "op_delete"://刪除資料
    #強制關除錯
    ugm_module_debug_mode(0);
    echo op_delete();
    exit;

  //新增資料
  case "op_insert":
    op_insert();
    redirect_header($_SESSION['return_url'], 3, _BP_SUCCESS);
    XoopsCache::clear();
    exit;

  //輸入表單
  case "op_form":
    op_form($sn);
    break;

  //預設動作
  default:
    # ---- 目前網址 ----
    $_SESSION['return_url'] = getCurrentUrl();
    $op = "op_list";
    op_list();
    break;
  /*---判斷動作請貼在上方---*/
}