```
2. Javascript 的轉址方法 ```
```
3. PHP 的轉址方法
前提,前面不可以有輸出 ```
header('Location: 網址');
exit;
```
### 二、什麼時候有轉向
1. 寫入、更新、刪除資料庫時
### 三、程式架構
1. 列表:將某個主表的欄位顯示在頁面上(重要的欄位),資料多時,會用到分頁,而每筆記錄的列表,會有「新增」、「編輯」、「刪除」、「瀏覽」.....
由於列表有顯示畫面,所以會使用 smarty 樣板引擎
![](https://www.ugm.com.tw/uploads/tad_book3/image/book/46/46-001.JPG)
2. 表單:當按下「新增」、「編輯」時,系統會顯示表單,來收集資料
由於新增與編輯的架構是一樣的,不同的是預設值,編輯會從「資料庫」撈資料,新增則使用預定的值
這裡如果是新手沒有概念如何處理,請依照需求,一個一個寫出來,換句話就是寫一個「新增表單」與一個「編輯表單」,經過幾個案子後,自然能看出關聯,進而將二個合而為一,節省日後程式維護的時間
由於表單有顯示畫面,所以會使用 smarty 樣板引擎
![](https://www.ugm.com.tw/uploads/tad_book3/image/book/46/46-002.JPG)
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;
/*---判斷動作請貼在上方---*/
}
```