編寫共用程式碼

建立檔案sql.php

建立檔案sql.php,放入共用程式碼

寫入必要程式碼

/*** 開啟資料庫連接 ***/
$pdo = new PDO("mysql:host=localhost;dbname=dbxx;charset=utf8", "root", "");
1
2

寫入通用function

由於考試有四個小時的時間限制,將一些常用語法寫成 function 來縮短字數,節省打字時間
第一題後台資料處理大同小異,因此也可以寫成function,避免複製貼上修時漏改

// 節省 fetchAll 字數
// 只寫fetchAll就夠了,因為fetchAll有含query,所以更新和刪除資料也能用
function All($sql)
{
	global $pdo;
	return $pdo->query($sql)->fetchAll();
}

// 節省 header跳頁 字數
// 其他題版型自訂的Javascript跳頁函式名稱也叫lo
function lo($l)
{
	return header("location:".$l);
}

// 第一題的SQL很有規律,因此寫成function
// 前台顯示加 where display = 1
// 後台則不用(顯示所有資料)
function sql($tb, $dis)
{
	$r = "select * from ".$tb;
	if($dis) 	$r .= " where display = 1";
	
	return $r;
}

// 第一題的更多最新消息頁和一些後台需要分頁功能,所以寫成function
// 分頁sql
// tbl為資料表
// p(page)為目前頁數,l(limit)為一頁筆數,s(show)為判斷是否只查詢顯示
function page($tbl, $p, $l, $s)
{
	global $pdo;

	// 從第幾筆開始查詢,SQL的limit第一個數字從0開始算
	// "LIMIT 0,5" 代表跳過0筆資料取5筆
	// 頁數 |   SQL LIMIT第一個數字
	//  1   |   1*5-5=0
	//  2   |   2*5-5=5
	$start = $p*$l-$l;

	return sql($tbl, $s)." limit ".$start.", ".$l;
}

// 分頁頁碼
// tbl為資料表
// p(page)為目前頁數,l(limit)為一頁筆數,s(show)為判斷是否只查詢顯示
// redo為原頁面的redo變數(第一題的後台以 redo 判斷顯示哪個管理項目)
// 最新消息頁有提供分頁頁碼的左右箭頭,複製過來改就好
function pagelink($tbl, $p, $l, $s, $redo)
{
	global $pdo;

	// 把要顯示的東西串在一個變數裡 return
	$r = "";

	// 總頁數
	$result = All(sql($tbl, $s));
	$tp = ceil(count($result) / $l);

	// 下一頁
	$np = $p+1;
	if($np > $tp)	$np = $tp;

	// 上一頁
	$lp = $p-1;
	if($lp < 1)		$lp = 1;

	// 上一頁的箭頭
	$r .= '<a class="bl" style="font-size:30px;" href="?p='.$lp.'&redo='.$redo.'"">< </a>';

	// 頁碼
	for($i=1; $i<=$tp; $i++)
	{
		if($i == $p)	$r.= '<a class="bl" style="font-size:50px;" href="?do=meg&p='.$i.'&redo='.$redo.'">'.$i.'</a>';
		else	$r.= '<a class="bl" style="font-size:30px;" href="?do=meg&p='.$i.'&redo='.$redo.'">'.$i.'</a>';
	}

	// 下一頁的箭頭
	$r .= '<a class="bl" style="font-size:30px;" href="?p='.$np.'&redo='.$redo.'"> ></a>';

	return $r;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83

寫入session控制

// 進站人數
// 以 $_SESSION["v"] 判斷是否已經算過人數
if(empty($_SESSION["v"]))
{
	// 隨便給值,不是空值就好
	$_SESSION["v"] = "123";
	
	// 資料庫更新人數
	All("update total set total = total + 1");
}

// 管理登入按鈕
// 以 $_SESSION["a"] 判斷是否登入
if(empty($_SESSION["a"]))
{
	$btn = "管理登入";
	$btnh = "login.php";
}
else
{
	$btn = "回後台管理";
	$btnh = "admin.php";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23