Jill 筆記
:::
:::
所有書籍
「PHP從入門到放棄實戰班」目錄
MarkDown
9-2 讀出資料的安全性過濾並顯示
1. 實戰之前
1-1 安裝開發環境
1-2 上課範例
2. HTML基礎
2-1 index.html
3. BootStrap響應式框架
3-1 格線系統
3-2 表格
3-3 導覽列
3-4 表單
4. PHP基本語法
4-1 註解
4-2 PHP資訊頁
4-3 PHP變數與陣列
4-4 各種訊息整理
5. 套用Smarty樣板
5-1 使用 Smarty
5-2 index.php
5-3 templates/index.tpl
5-4 php二維陣列
6. 資料庫規劃
6-1 MySQL常用資料類型一覽
6-2 讓PHP7連線到MySQL資料庫
7. PHP程式整併與樣板流程判斷
7-1 PHP條件判斷
7-2 PHP的變數過濾
7-3 練習自訂函數
7-4 templates/index.tpl
7-5 index.php
8. 製作表單並寫入資料到資料庫
8-1 index.php
8-2 post_form.tpl
8-2-1 post_form.tpl
8-3 templates/index.tpl
8-4 footer.php
9. 資料庫讀取
9-1 幾個常用的迴圈用法
9-2 讀出資料的安全性過濾並顯示
9-3 想想寫入還有什麼問題?
9-4 templates/post_form.tpl
9-5 index.php
9-6 templates/index.tpl
10. 編輯表單、刪除資料
10-1 顯示單筆資料
10-2 刪除事項
10-3 index.php
10-4 templates/post_form.tpl
10-5 templates/index.tpl
10-6 templates/show_one.tpl
11. 其他細節處理(補充)
11-1 小月曆
11-2 加入所見即所得編輯器
11-3 表單驗證
11-4 分頁功能
12. 練習
9-4 templates/post_form.tpl
PHP從入門到放棄實戰班 ============ 1. 部份欄位沒填怎麼辦? 2. 日期亂填沒檢查怎麼辦? ### 一、 檢查必填欄位 1. 用簡單的 empty() 函數就可以判斷是否為空值了。或者用 if($變數=="")也可以。 ```php //失敗返回 function error() { global $smarty; // die(var_dump($_POST)); $message = []; if (empty($_POST['tilte'])) { $message[] = '標題必填'; } if (empty($_POST['directions'])) { $message[] = '描述必填'; } if (empty($_POST['end'])) { $message[] = '到期日必填'; } $smarty->assign('title', '錯誤提示頁'); $smarty->assign('message', $message); $smarty->display('templates/error.tpl'); exit(); } ``` 2. 製作錯誤訊息樣板 - 檔頭加入`
` 5秒後可自動轉向。 - 程式碼 template/error.tpl ```markup
{include file="header.tpl"}
錯誤提示
{foreach from=$message key=key item=value}
{$key+1}.{$value}
{/foreach}
``` ### 二、 檢查日期格式 1. 自訂函數 `function.php` ```php // 判斷日期格式是否正確 function checkDateIsValid($date, $formats = array("Y-m-d", "Y/m/d")) { $unixTime = strtotime($date); if (!$unixTime) { return false; } foreach ($formats as $format) { if (date($format, $unixTime) == $date) { return true; } } return false; } ``` 2. `function.php` 中 `error()` 加入判斷日期格式的函數 ```php if (!checkDateIsValid($_POST['end'])) { $message[] = '到期日的日期格式需為西元 YYYY-mm-dd 或 YYYY/mm/dd'; } ``` 3. 使程式更完整,擴展性高程式碼: - function.php ```php //失敗返回 function error($message, $refresh = '') { global $smarty; $smarty->assign('page_title', '錯誤提示頁'); $smarty->assign('message', $message); $smarty->assign('refresh', $refresh); $smarty->display('templates/error.tpl'); exit(); } // 判斷日期格式是否正確 function checkDateIsValid($date, $formats = array("Y-m-d", "Y/m/d")) { $unixTime = strtotime($date); if (!$unixTime) { return false; } foreach ($formats as $format) { if (date($format, $unixTime) == $date) { return true; } } return false; } ``` - index.php ```php function check_error() { $message = []; if (empty($_POST['title'])) { $message[] = '標題必填'; } if (empty($_POST['directions'])) { $message[] = '描述必填'; } if (empty($_POST['end'])) { $message[] = '到期日必填'; } if (empty($_POST['assign'])) { $message[] = '至少指派一名'; } if (!checkDateIsValid($_POST['end'])) { $message[] = '到期日的日期格式需為西元 YYYY-mm-dd 或 YYYY/mm/dd'; } if (!empty($message)) { error($message, 1); exit(); } } //新增清單 function add() { global $db; check_error(); //以下省略 } ```