8.
文章分頁及搜尋
一、 Git總整理
- 安裝git:如此VSCode的原始檔控制就有作用(本地端git,自己做版本控制)
- 申請github帳號:進一步備份並進行多人開發
- 安裝gitkraken 或github desktop有圖形直覺界面可用,和GitHub互動更簡單。
- 自己尚無Git專案,想要建個專案到GitHub上:
- (1) 海怪→File→Init Repo→Local Only,在自己電腦上弄個git專案
- (2) 到GitHub.com去開一個新的儲存庫new repository,然後複製畫面上的「git remote add origin https://github.com/tadlearn/xxx.git」指令
- (3) 海怪→File→Open Terminal,然後在終端機貼上剛剛的指令,以串連 github
- (4) 海怪→Stage all changes→輸入摘要→commit提交→push上自己的github
- (5) 1~3只要做一次,以後都是進行4而已。
- GitHub上已有自己的專案,但自己電腦中沒有(換不同電腦時):
- (1) 海怪→File→Clone Repo→GitHub.com→設好路徑→選要複製的專案→送出即可。
- (2) 海怪→Stage all changes→輸入摘要→commit提交→push上自己的github
- (3) 1只要做一次,以後都是進行2而已。
- Fork他人專案(算是專案貢獻者):
- (1) 到GitHub.com去找到心儀的專案→按Fork
- (2) 海怪→File→Clone Repo→GitHub.com→設好路徑→選要複製的專案→送出即可。
- (3) 海怪→Stage all changes→輸入摘要→commit提交→push上自己的github
- (4) 海怪→PULL REQUESTS→從自己到原專案→送出合併請求,等原專案管理員合併。
- (5) 1-2只要做一次,以後都是進行3-4而已。
- Fork他人的專案,當主專案有異動時,想同步主專案:
- (1) 到自己的GitHub.com找到該Fork專案→Pull request→switching the base 切換比對方向(比對主專案到底和我Fork的專案的差異有哪些)
- (2) Create pull request建立下載請求→Merge pull request如此便合併完成
- (3) 海怪→Pull下載到自己電腦專案中,日後就不斷重複上面的3-4或者這裡的1-2
- 他人專案的共同開發者(通常是被邀請或一起開發):
- (1) 海怪→File→Clone Repo→GitHub.com→設好路徑→選要複製的專案→送出即可。
- (2) 海怪→Stage all changes→輸入摘要→commit提交→push上自己的github
- (3) 海怪→Pull下載異動到自己電腦專案中
- (4) 1只要做一次,以後都是進行2-3而已。
- 申請後,您的網站網址為:「http://stu.tncomu.tn.edu.tw/~帳號」
- 資料庫和FTP帳號、密碼是一樣的!上傳時建議用 22 port
- http://stu.tncomu.tn.edu.tw/adminer.php可登入進行資料庫管理,匯入sql檔
- 修改
template_c
、uploads
、elFinder/files
的權限為777(瀏覽器可寫入)
- 上傳後,修改
setup.php
的設定即可。
三、 關於錯誤訊息
error_reporting(0)
; 可以關閉所有錯誤訊習。
error_reporting(E_ERROR | E_WARNING | E_PARSE);
//notice訊息不要出現
- 詳細可見:http://php.net/manual/zh/errorfunc.constants.php
四、 分頁工具
- 將分頁class檔
PageBar.php
放到專案目錄下,將底下語法放在原有的 $sql
和 $result
之間!
- 原始的
$sql
不可加limit
語法!$bar
(分頁工具列)和$total
(總數量)可自行套到樣板。
include_once "PageBar.php";
$PageBar = getPageBar($db, $sql, 5, 10);
$bar = $PageBar['bar'];
$sql = $PageBar['sql'];
$total = $PageBar['total'];
getPageBar($資料庫物件, $sql語法, $顯示資料數 = 20, $工具列呈現的頁數 = 10, $要連結頁面 = "", $額外的連結參數 = "");
五、 上下頁的作法
- 先確定排序方式,例如:依update_time日期排序,從大到小(新到舊)
- 第一筆定義:最大(新)日期的文章
- 下一筆定義:比現有文章日期小一點的文章,即:抓出「文章日期<目前文章日期」的資料,故先找出<目前文章日期的所有文章,抓日期最大的那一筆(大→小排序抓一筆)。如:
SELECT * FROM `article` WHERE `update_time` < '{$data['update_time']}' ORDER BY `update_time` DESC LIMIT 0,1
- 上一筆定義:比現有文章日期大一點的文章,即:抓出「文章日期>目前文章日期」的資料,故先找出>目前文章日期的所有文章,抓日期最小的那一筆(小→大排序抓一筆)。如:
SELECT * FROM `article` WHERE `update_time` > '{$data['update_time']}' ORDER BY `update_time` LIMIT 0,1
六、 安裝ckeditor外掛
- https://ckeditor.com/cke4/addon/autogrow
- 下載,解壓,將
autogrow
資料夾放到ckeditor/plugins
下
- 編輯
ckeditor\config.js
,加入:config.extraPlugins = 'autogrow';
即可
七、 多重搜尋
- 搜尋一般用
like
語法,%
是萬用字元,代表任何字,如:
$sql = "SELECT * FROM `article` WHERE `title` LIKE '%{$keyword}%' OR `content` LIKE '%{$keyword}%' ORDER BY `update_time` DESC";
- 多重搜尋在於關鍵字的處理,例如空白、
and
或or
要如何抓出套用。在此,我們僅用空白,代表or
,以簡化流程。 explode()用來拆解,implode()用來合併。
$keyword_arr = explode(' ', $keyword);
$key_arr = array();
foreach ($keyword_arr as $word) {
if (!empty($word)) {
$key_arr[] = "(`title` LIKE '%{$word}%' OR `content` LIKE '%{$word}%')";
}
}
$query = implode(' OR ', $key_arr);
- 此外,表單一般都用get方法來傳遞變數居多
- 若想將font-awsome用到
placeholder
中,可以套用其編碼及字型,編碼請參見:http://fontawesome.io/cheatsheet/
<input type="text" class="form-control form-control-sm" name="keyword" placeholder=" 搜尋關鍵字以空白隔開" style="font-family: 微軟正黑體, FontAwesome">