Title1

Title2

Title3

13-3 nav_m.php 完成

 

<?php
require_once 'head.php';
#定義常用的變數
$TBL['name']="show_kind";//資料表
$TBL['kind']="nav_home";//分類

#整理傳入變數
$op = isset($_REQUEST['op'])?$_REQUEST['op']:"";
$sn = isset($_REQUEST['sn'])?intval($_REQUEST['sn']):"";

#程式流程
switch($op){
  #新增記錄
  case "op_insert":
    $sn=op_insert();
    redirect_header("nav_m.php?op=op_show&sn={$sn}",3000,"新增資料成功!!");
    exit;
  break;
  #更新記錄
  case "op_update":
    $sn=op_update($sn);
    redirect_header("nav_m.php?op=op_show&sn={$sn}",3000,"更新資料成功!!");
    exit;
  break;
  #刪除記錄
  case "op_delete":
    op_delete($sn);
    redirect_header($_SESSION['CurrentUrl'],3000,"刪除記錄成功!!");
    exit;
  break;
  #表單
  case "op_form":
    op_form($sn);
  break;
  #顯示單筆
  case "op_show":
    op_show($sn);
  break;
  #列表
  default:
    # ---- 目前網址 ----
    $_SESSION['CurrentUrl']=getCurrentUrl();
    $op="op_list";
    op_list();
  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_insert()
{
  global $mysqli,$TBL;
  #資料過濾
  #http://php.net/manual/en/mysqli.real-escape-string.php
  $_POST['title']  = $mysqli->real_escape_string($_POST['title']);
  $_POST['target'] = intval($_POST['target']);
  $_POST['enable'] = intval($_POST['enable']);
  //$_POST['sort']   = intval($_POST['sort']);
  $_POST['url']    = $mysqli->real_escape_string($_POST['url']);
  $_POST['sort']   = get_max_sort_show_kind("sort",$TBL);

  # nav_home => 首頁的選單
  $_POST['kind'] = $TBL['kind'];

  $sql = "insert into `{$TBL['name']}`
          (`title`, `target`, `enable`, `sort`,`url`,`kind`)
          VALUES
          ('{$_POST['title']}', '{$_POST['target']}', '{$_POST['enable']}', '{$_POST['sort']}', '{$_POST['url']}', '{$_POST['kind']}')";
  $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));

  $sn=$mysqli->insert_id;//傳回insert 指令所產生之流水號

  return $sn;
}

########################################
# 更新記錄
########################################
function op_update($sn="")
{
  global $mysqli,$TBL;
  if(!$sn)redirect_header("index.php",3000,"更新記錄錯誤!!");

  #資料過濾
  $_POST['sn']   = intval($_POST['sn']);
  $_POST['title']  = $mysqli->real_escape_string($_POST['title']);
  $_POST['target'] = intval($_POST['target']);
  $_POST['enable'] = intval($_POST['enable']);
  $_POST['sort']   = intval($_POST['sort']);
  $_POST['url']    = $mysqli->real_escape_string($_POST['url']);

  $sql = "update `{$TBL['name']}` set
          `title`  = '{$_POST['title']}' ,
          `target` = '{$_POST['target']}',
          `enable` = '{$_POST['enable']}',
          `url` = '{$_POST['url']}',
          `sort` = '{$_POST['sort']}'
          where sn='{$_POST['sn']}'";
  $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));

  return $sn;
}

###############################################################################
#  刪除資料
###############################################################################
function op_delete($sn="")
{
  global $mysqli,$TBL;
  if(!$sn)redirect_header("index.php",3000,"刪除記錄錯誤!!");

  #檢查
  $sql = "delete
          from `{$TBL['name']}`
          where `sn`='{$sn}'";//die($sql);
  $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
  return;
}
########################################
#取得單筆記錄
########################################
function get_show_kind($sn="")
{
  global $mysqli,$TBL;
  if(!$sn)redirect_header("index.php",3000,"查詢選單資料錯誤!!");

  $sql = "select *
          from `{$TBL['name']}`
          where `sn`='{$sn}' and `kind`='{$TBL['kind']}'";
  //$mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
  $result = $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
  $DBV = $result->fetch_assoc();

  #過濾撈出資料
  $DBV['sn'] = intval($DBV['sn']);
  //http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
  $DBV['title'] = htmlspecialchars($DBV['title'], ENT_QUOTES); // 轉換雙引號和單引號
  $DBV['url'] = htmlspecialchars($DBV['url'], ENT_QUOTES); // 轉換雙引號和單引號
  $DBV['sort'] = intval($DBV['sort']);
  $DBV['enable'] = intval($DBV['enable']);
  $DBV['target'] = intval($DBV['target']);
  return $DBV;
}

########################################
# 表單
########################################
function op_form($sn="")
{
  global $mysqli,$smarty;

  #抓取預設值
  if($sn)
  {
    #編輯
    $DBV=get_show_kind($sn);//取得單筆記錄
    $DBV['op'] = "op_update";
    $DBV['form_title'] = "編輯選單";
    //print_r($DBV);die();
  }else
  {
    #新增
    $DBV=array();
    $DBV['op'] = "op_insert";
    $DBV['form_title'] = "新增選單";
  }

  //預設值設定
  //標題 title (text)、網址 url (text)、是否外連 target (radio)、是否啟用 enable (radio)、排序 sort(text)

  $DBV['sn']     = (isset($DBV['sn']))     ? $DBV['sn']     : "";
  $DBV['title']  = (isset($DBV['title']))  ? $DBV['title']  : "";
  $DBV['enable'] = (isset($DBV['enable'])) ? $DBV['enable'] : "1";
  $DBV['target'] = (isset($DBV['target'])) ? $DBV['target'] : "0";
  $DBV['url']    = (isset($DBV['url']))    ? $DBV['url']    : "";
  $DBV['sort']   = (isset($DBV['sort']))   ? $DBV['sort']   : "";

  $smarty->assign("DBV", $DBV);
  return;
}

########################################
# op_show
########################################
function op_show($sn="")
{
  global $mysqli,$smarty,$TBL;
  if(!$sn)redirect_header("index.php",3000,"查詢選單資料錯誤!!");

  #取得單筆記錄,可以寫成函數
  #sn ofsn  kind  title sort  enable  url target  col_sn  content
  $sql = "select *
          from `{$TBL['name']}`
          where `sn`='{$sn}' and `kind`='{$TBL['kind']}'";
  //$mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
  $result = $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));
  $DBV = $result->fetch_assoc();

  #過濾撈出資料
  $DBV['sn'] = intval($DBV['sn']);
  //http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
  $DBV['title'] = htmlspecialchars($DBV['title'], ENT_QUOTES); // 轉換雙引號和單引號
  $DBV['url'] = htmlspecialchars($DBV['url'], ENT_QUOTES); // 轉換雙引號和單引號
  $DBV['sort'] = intval($DBV['sort']);

  $DBV['enable'] = $DBV['enable'] ? "是":"<span style='color:red;'>否</span>";
  $DBV['target'] = $DBV['target'] ? "是":"<span style='color:red;'>否</span>";

  $smarty->assign("DBV", $DBV);
  return;
}

########################################
# 列表
########################################
function op_list()
{
  global $mysqli,$smarty,$TBL;

  #取得所有記錄
  $sql = "select *
          from `{$TBL['name']}`
          where `kind`='{$TBL['kind']}'
          order by `sort` ";
  $result = $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate));

  $DBV=array();
  while($row = $result->fetch_assoc())
  {
    #過濾撈出資料
    $row['sn'] = intval($row['sn']);
    //http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
    $row['title'] = htmlspecialchars($row['title'], ENT_QUOTES); // 轉換雙引號和單引號
    $row['url'] = htmlspecialchars($row['url'], ENT_QUOTES); // 轉換雙引號和單引號
    $row['sort'] = intval($row['sort']);
    $row['enable'] = $row['enable'] ? "是":"<span style='color:red;'>否</span>";
    $row['target'] = $row['target'] ? "是":"<span style='color:red;'>否</span>";

    $DBV[]= $row;
  }

  $smarty->assign("DBV", $DBV);
  return;
}