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 產生內嵌語法
8-3
加入管理工具功能
判斷若是有登入,就在文章的資訊列加上管理工具
admin.php 預設動作就是叫出編輯表單,所以,編輯時不給 op 也沒關係,但是一定要有 id 編號,才知道要改哪一篇。
一樣請 AI 幫忙一下:
請用BootStrap5,建立一個按鈕組,包含「編輯」和「刪除」的按鈕,給Smarty5的樣板使用
編輯按鈕請連結至 admin.php?id={$news.id}
刪除按鈕請連結至 admin.php?op=delete&id={$news.id},並加入sweetalert的刪除確認後才執行。
AI非常乖巧的完成任務,我們將以下語法存為 templates/toolbar.tpl
<div class="btn-group" role="group" aria-label="操作按鈕">
<a href="admin.php?id={$news.id}" class="btn btn-primary btn-sm">
<i class="fas fa-edit"></i> 編輯
</a>
<a href="#" class="btn btn-danger btn-sm" onclick="confirmDelete({$news.id}); return false;">
<i class="fas fa-trash-alt"></i> 刪除
</a>
</div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
function confirmDelete(id) {
Swal.fire({
title: '確定要刪除嗎?',
text: "此操作無法撤銷!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '是的,刪除它!',
cancelButtonText: '取消'
}).then((result) => {
if (result.isConfirmed) {
window.location.href = `admin.php?op=delete&id=${id}`;
}
})
}
</script>
修改 templates/article.tpl,判斷是否有登入,若有則引入工具列樣板
<article class="my-4">
...略...
<div class="row g-0 my-2">
<div class="col-10 bg-light p-2">
{if isset($smarty.session.is_admin) && $smarty.session.is_admin}
{include file="toolbar.tpl"}
{/if}
{$date} @ {$school} 已有 {$count} 次點閱
</div>
<div class="col-2 bg-dark bg-opacity-50 p-2 text-white text-center">
{$author} 報導
</div>
</div>
...略...
</article>
若是出現錯誤訊息,一樣可以將訊息貼給AI,請他解決,例如:
執行後會出現以下錯誤訊息,該如何修改?
Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "file:toolbar.tpl" on line 24 "window.location.href = `admin.php?op=delete&id=${id}`;" unknown tag 'id' <-- thrown in C:\UniServerZ\www\php8\templates\toolbar.tpl on line 24
他就會說明原因,並立即修正。像上面是在 Smarty 模板中使用了 JavaScript 的模板字符串語法(像這樣:${id}),而 Smarty 將其誤解為自己的變數標記,因此錯誤。所以,AI提出解決方案,只要對 JavaScript 進行一些調整就行了:
window.location.href = 'admin.php?op=delete&id=' + id;
如此就大功告成囉!
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 產生內嵌語法