[1062] PHP7入門
一、 先完成上星期未完成的部份
- 先關閉錯誤訊息,避免登入的ajax被卡住
- 加入分頁、上下頁功能、完成多關鍵字搜尋功能
- 先下載缺少的檔案,並在function.php補上: //讀出所有類別 function list_topic() { global $db, $smarty; $sql = "SELECT * FROM `topic` ORDER BY `topic_sn` "; $result = $db->query($sql) or die($db->error); $all = []; $i = 0; while ($data = $result->fetch_assoc()) { $all[$i] = $data; $i++; } //die(var_export($all)); list_topic_status(); $smarty->assign('all', $all); } //讀出所有TOPIC_status function list_topic_status() { if (!isset($smarty)) { global $smarty; } //狀態值增刪記得修改TABLE值 $status = ['開始投稿', '當期', '一般', '關閉']; $smarty->assign('topic_status', $status); }
- 在nav.tpl加上 <a href="topic.php" class="nav-link text-white">專題設定</a>
- 下載admin.zip及templates.zip,覆蓋原檔,這是文章發布的部份。
- 當兩個資料表的欄位有關連時才能用join,例如topic分類資料表的topic_sn以及article中的topic_sn,欄位名稱不一定要相同,但代表的意義必須一樣。SQL語法為: SELECT a.*, b.* FROM 左表 AS a JOIN 右表 AS b ON a.欄位 = b.欄位 WHERE 條件
- 若關聯的欄位名稱一樣,亦可以用「USING 欄位」來取代「ON a.欄位 = b.欄位」
- 假設有這兩個表:
article topic sn topic_sn title topic_sn topic_title 1 1 文章1 1 分類1 2 1 文章2 2 分類2 3 1 文章3 4 分類4 4 3 文章4 5 3 文章5 6 4 文章6 - 以MySQL來說,常用的join有四種:
- (1) JOIN:左右表都要有資料才會取出
SELECT a.*, b.* FROM article AS a JOIN topic AS b ON a.topic_sn= b.topic_sn
結果為
sn topic_sn title topic_title 1 1 文章1 分類1 2 1 文章2 分類1 3 1 文章3 分類1 6 4 文章6 分類4 - (2) LEFT JOIN:以左表為主,右表有就取出,沒有就空白。
SELECT a.*, b.* FROM article AS a LEFT JOIN topic AS b ON a.topic_sn= b.topic_sn
結果為
sn topic_sn title topic_title 1 1 文章1 分類1 2 1 文章2 分類1 3 1 文章3 分類1 4 3 文章4 NULL 5 3 文章5 NULL 6 4 文章6 分類4 - (3) RIGHT JOIN:以右表為主,左表有就取出,沒有就空白。
SELECT a.*, b.* FROM article AS a RIGHT JOIN topic AS b ON a.topic_sn= b.topic_sn
結果為
sn topic_sn title topic_title 1 1 文章1 分類1 2 1 文章2 分類1 3 1 NULL 分類2 6 4 文章6 分類4 - (4) FULL JOIN:左右表只要其中一個有資料就會取出。( FULL JOIN是 LEFT JOIN 與 RIGHT JOIN 的聯集. 但MySQL沒有直接支援 FULL JOIN,故用 UNION 來得到同樣的結果 )
SELECT a.*, b.* FROM article AS a LEFT JOIN topic AS b ON a.topic_sn= b.topic_sn
UNION
SELECT a.*, b.* FROM article AS a RIGHT JOIN topic AS b ON a.topic_sn= b.topic_sn
結果為
sn topic_sn title topic_title 1 1 文章1 分類1 2 1 文章2 分類1 3 1 文章3 分類1 NULL 2 NULL 分類2 4 3 文章4 NULL 5 3 文章5 NULL 6 4 文章6 分類4
- (1) JOIN:左右表都要有資料才會取出
SELECT a.*, b.* FROM article AS a JOIN topic AS b ON a.topic_sn= b.topic_sn
- PHP可以透過mail()來寄信,前提是主機本身要設定好機信機制,不管是用SMTP或sendmail其語法如下: mail($收信人的Email, $主旨, $信件內容, $headers);
- 一般而言,寄信內容是純文字的,若要使用網頁語法,那麼必須設定$headers $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
- 若要帶附檔,則需要先將檔案編碼,或者直接改用PHPMailer來處理。
- select用selected,radio和checkbox用checked,一般我們直接在樣板中判斷即可 <option value="類別" {if $topic.topic_type=="類別" }selected{/if}>類別</option> <option value="主題" {if $topic.topic_type=="主題" }selected{/if}>主題</option>
- https://www.addtoany.com/
- 點擊「Get the button code for」選擇「Any site」,然後點擊Choose Services…設定需要的服務(友善列印為printfriendly),點擊「Get Button Code」複製語法,並貼到樣板檔即可。