一、kind.php
<?php require_once 'head.php'; #定義常用變數 $TBL['name']="show_kind";//資料表名稱 $TBL['kind']="kind_prod";//分類 #整理傳入變數 $op = isset($_REQUEST['op'])?$_REQUEST['op']:""; $sn = isset($_REQUEST['sn'])?intval($_REQUEST['sn']):""; #程式流程 switch($op){ #新增記錄 case "op_insert": $sn=op_insert(); redirect_header("kind.php?op=op_show&sn={$sn}",3000,"新增資料成功!!"); exit; break; #更新記錄 case "op_update": $sn=op_update($sn); redirect_header("kind.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['enable'] = intval($_POST['enable']); //$_POST['sort'] = intval($_POST['sort']); $_POST['sort'] = get_max_sort_show_kind("sort",$TBL);//直接寫入最大值 # nav_home => 首頁的選單 $_POST['kind'] = $TBL['kind']; $sql = "insert into `{$TBL['name']}` (`title`, `enable`, `sort`,`kind`) VALUES ('{$_POST['title']}', '{$_POST['enable']}', '{$_POST['sort']}', '{$_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['enable'] = intval($_POST['enable']); $_POST['sort'] = intval($_POST['sort']); $sql = "update `{$TBL['name']}` set `title` = '{$_POST['title']}' , `enable` = '{$_POST['enable']}', `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` ";//die($sql); $result = $mysqli->query($sql) or die(printf("Error: %s <br>".$sql, $mysqli->sqlstate)); $rows=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['sort'] = intval($row['sort']); $row['enable'] = $row['enable'] ? "是":"<span style='color:red;'>否</span>"; $rows[]= $row; } $smarty->assign("DBV", $rows); return; }
二、樣板
{* 類別管理 表單 *} {if $WEB.file_name == "kind.php" and $op == "op_form"} <div class="container" style="margin-top:20px;"> <div style="margin:10px 0;"> <button onclick="window.location.href='{$smarty.session.CurrentUrl}'" type="button" class="btn btn-warning">返回</button> </div> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">{$DBV.form_title}</h3> </div> <div class="panel-body"> <form action="kind.php" method="post"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label>標題</label> <input type="text" class="form-control" id="title " name="title" value="{$DBV.title}" placeholder="標題"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label style="display:block;">啟用狀態</label> <input type='radio' name='enable' id='enable_1' value='1' {if $DBV.enable==1}checked{/if} > <label for='enable_1'>是</label> <input type='radio' name='enable' id='enable_0' value='0' {if $DBV.enable==0}checked{/if}> <label for='enable_0'>否</label> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>排序</label> <input type="text" class="form-control" id="sort" name="sort" value="{$DBV.sort}" placeholder="排序"> </div> </div> </div> <!--用來控制程式流程--> <input type="hidden" name="op" value="{$DBV.op}"> <input type="hidden" name="sn" value="{$DBV.sn}"> <button type="submit" class="btn btn-default">送出</button> </form> </div> </div> </div> {/if} {* 類別管理 顯示單筆 *} {if $WEB.file_name == "kind.php" and $op == "op_show"} <div class="container" style="margin-top:20px;"> <div style="margin:10px 0;"> <button onclick="window.location.href='{$smarty.session.CurrentUrl}'" type="button" class="btn btn-warning">返回</button> <button onclick="window.location.href='?op=op_form&sn={$DBV.sn}'" type="button" class="btn btn-success">編輯</button> </div> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">顯示單筆</h3> </div> <div class="panel-body"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label>標題</label> <div class="form-control">{$DBV.title}</div> </div> </div> <div class="col-md-2"> <div class="form-group"> <label style="display:block;">啟用狀態</label> <div class="form-control">{$DBV.enable}</div> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>排序</label> <div class="form-control">{$DBV.sort}</div> </div> </div> </div> </div> </div> </div> {/if} {* 類別管理 列表 *} {if $WEB.file_name == "kind.php" and $op == "op_list"} {literal} <link rel="stylesheet" href="../class/sweet-alert/sweet-alert.css" type="text/css" /> <script src="../class/sweet-alert/sweet-alert.js" type="text/javascript"></script> <script type="text/javascript"> function op_delete_js(sn){ swal({ title: '確定要刪除此資料?', text: '相關資料通通都將會被移除!', type: 'warning', showCancelButton: 1, confirmButtonColor: '#DD6B55', confirmButtonText: '確定刪除!', closeOnConfirm: false , allowOutsideClick: true }, function(){ location.href='kind.php?op=op_delete&sn=' + sn; }); } </script> {/literal} <div class="container" style="margin-top:20px;"> <h2 class="text-center">類別管理</h2> <table class="table table-bordered table-hover list-table"> <thead> <tr class="active"> <th class="text-center col-md-8">標題</th> <th class="text-center col-md-1">排序</th> <th class="text-center col-md-1">啟用</th> <th class="text-center col-md-2"> <button onclick="window.location.href='?op=op_form'" type="button" class="btn btn-primary btn-xs">新增</button> </th> </tr> </thead> <tbody> {foreach from=$DBV item=row} <tr> <td>{$row.title}</td> <td class="text-center">{$row.sort}</td> <td class="text-center">{$row.enable}</td> <td class="text-center"> <button onclick="window.location.href='?op=op_show&sn={$row.sn}'" type="button" class="btn btn-warning btn-xs">瀏覽</button> <button onclick="window.location.href='?op=op_form&sn={$row.sn}'" type="button" class="btn btn-success btn-xs">編輯</button> <button onclick="javascript:op_delete_js({$row.sn});" type="button" class="btn btn-danger btn-xs">刪除</button> </td> </tr> {/foreach} </tbody> </table> </div> {/if}