Toggle main menu visibility
下載輕鬆架
套件下載
使用手冊
發問討論
網站地圖
:::
登入
登入
帳號
密碼
登入
:::
所有書籍
「用AI學PHP8」目錄
MarkDown
7-3 製作文章摘要
1. 學好程式的幾個建議
1-1 安裝PHP運作環境
1-2 安裝 VSCode 開發工具
1-3 安裝 Composer
1-4 關於PHP8
1-5 上課範例及需求
1-6 研習時需要的學習心態
1-7 建立專案目錄
2. 開始動手做界面
2-1 請AI幫我們做前端界面
2-2 請AI幫我們做滑動圖輪播區
2-3 將首頁和滑動圖整併在一起
2-4 請AI製作文章發布界面
3. 精修完整界面樣板
3-1 安裝Smarty樣板引擎
3-2 建立前、後台樣板檔並套用之
3-3 將主樣板檔拆分成小樣板
3-3-1 美化頁首樣板檔 header.tpl
3-3-2 優化導覽列 nav.tpl
3-3-3 統一主內容樣式 main.tpl
3-3-4 微調一下側邊欄
3-3-5 修改頁尾
4. 讓表單開始有作用
4-1 傳入變數讓程式知道現在要做什麼
4-2 根據不同動作自動載入相對應樣板
4-3 修改編輯表單使之可以送出資料
4-4 製作共同頁首檔 header.php
5. 將資料存到資料庫
5-1 建立資料庫連線
5-2 用AI來產生表單儲存功能
5-2-1 接收表單的值
5-2-2 用PDO寫入資料庫
5-2-3 建立縮圖並產生json資料
5-2-4 檔案上傳與接收
5-3 完成整個新增流程
6. 製作顯示單一文章的功能
6-1 將資料庫取出的值帶入樣板
6-2 讓滑動圖可以真的運作
6-3 套用真實圖片到輪播圖中
7. 製作首頁列表功能
7-1 取得指定的新聞資料數
7-2 完成首頁輪播圖及新聞列表
7-3 製作文章摘要
7-4 加入文章分頁功能
7-5 完成側邊欄的近期新聞
8. 開始加入管理功能
8-1 讓系統記住是否為管理員
8-2 製作登入、登出功能
8-3 加入管理工具功能
8-4 製作編輯功能
8-5 初步完成更新功能
8-6 完成圖片管理
8-7 加入刪除功能
9. 完成各種小細節
9-1 完成點閱數功能
9-2 用影片替換輪播圖
9-3 加入搜尋功能
9-4 點擊學校可以列出該校文章
9-5 產生內嵌語法
7-5 完成側邊欄的近期新聞
用AI學PHP8 ======== 1. 製作分頁一直是個麻煩事,大致需要以下幾個步驟: 1. 取得總文章數 2. 根據一頁出現幾則,計算總頁數 3. 取得當前頁碼 4. 根據一頁出現幾則加上當前頁碼,就可使用 `all()` 函數取得範圍內的所有文章 5. 最後放上分頁工具 2. 有AI相助就省事多了,一樣給AI提示詞: ```markup 如何利用all()函數搭配BootStrap5的分頁工具,來做出分頁功能? ``` 3. AI給了兩部份,第一部份是取得總文章數的函數,請放到 `index.php `的最後 ```php function getTotalCount(): int { global $pdo; $stmt = $pdo->query("SELECT COUNT(*) FROM school_news"); return (int) $stmt->fetchColumn(); } ``` 4. 最後是要在頁面上放上分頁工具,不過這個寫法是直接在HTML中,套用PHP程式的寫法,比較難維護,我們目前適用樣板引擎的作法也不適用以下寫法。 ```markup
學校新聞列表
學校新聞列表
= $item['news_title'] ?>
= mb_substr($item['news_content'], 0, 100) ?>...
發布日期:= $item['report_date'] ?>
上一頁
= $i ?>
下一頁
``` 5. 因此,我們可以根據我們現況,請AI修改: ```markup 分頁導航部份是用smarty5做的,請改為smarty5語法,PHP會assign所有新聞$all_news給smarty5樣板檔 ``` 6. AI就能根據需求給出回應 ```php assign('all_news', $all_news); $smarty->assign('currentPage', $currentPage); $smarty->assign('totalPages', $totalPages); // 顯示模板 $smarty->display('news_list.tpl'); ``` 7.
依據回應,我們修改 `index.php `的 `switch()`,基本上就是在執行製作分頁1~3的步驟,取得總文章數→根據一頁出現幾則(可以先改小一點 `$perPage = 3;`),計算總頁數→取得當前頁碼,如此,就可以算出應該要從第幾筆資料開始抓,也就可以傳給all(),請他抓出指定範圍的文章。 ```php switch ($op) { case 'embed': # code... break; default: if (!empty($id)) { $smarty->assign('news', show($id)); $op = "show"; } else { // 設置每頁顯示的記錄數 $perPage = 3; // 獲取當前頁碼(如果沒有設置,默認為1) $currentPage = isset($_GET['page']) ? (int) $_GET['page'] : 1; // 獲取總記錄數 $totalCount = getTotalCount(); // 計算總頁數 $totalPages = ceil($totalCount / $perPage); // 確保當前頁碼在有效範圍內 $currentPage = max(1, min($currentPage, $totalPages)); // 計算 OFFSET $offset = ($currentPage - 1) * $perPage; $smarty->assign('currentPage', $currentPage); $smarty->assign('totalPages', $totalPages); $smarty->assign('all_news', all($offset, $perPage)); $op = "main"; } break; } ``` 8. 最後只要將<!-- 分頁導航 -->部份,取代原有 `templates/main.tpl` 的分頁工具就完成了! ```markup
上一頁
{for $i=1 to $totalPages}
{$i}
{/for}
下一頁
``` 9. 最就是多寫幾篇文章,就可以看出分頁工具的效果囉! ![](https://campus-xoops.tn.edu.tw/uploads/tad_book3/image/55/%E7%81%AB%E7%8B%90%E6%88%AA%E5%9B%BE_2024-08-04T00-04-43.992Z.png)