0%

[技能檢定]題組二 步驟13 製作最新文章管理功能

最新文章管理功能的步驟算是很簡單的應用,和題組一的後台幾乎一模一樣,只差在沒有內容編輯的要求而已,因此只要熟悉題組一的解法,這邊就照著做即可:

  1. 在製作前台的分類網誌功能時已經先匯入文章到資料庫了,因此項目一算是送分

  2. 在類別中建立後台文章管理頁面需要使用到的變數
    /Controller/News.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function backend(){
    $data=[
    'rows'=>$this->paginate(3),
    'links' =>$this->links(),

    //計算分頁起始的文章編號值
    'start'=>($this->links['now']-1)*$this->links['num']+1
    ];

    $this->view("./view/backend/news.php",$data);
    }
  3. 建立後台文章列表及分頁連結
    /view/backend/news.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <form action="./api/news_admin.php" method='post'>
    <table class="ct" style="width:75%;margin:auto">
    <tr>
    <td>編號</td>
    <td>標題</td>
    <td>顯示</td>
    <td>刪除</td>
    </tr>
    <?php
    foreach($rows as $key=> $row){
    ?>
    <tr>
    <td><?=$start+$key;?></td>
    <td><?=$row['title'];?></td>
    <td>
    <input type="checkbox" name="sh[]" value="<?=$row['id'];?>" <?=($row['sh']==1)?"checked":"";?>>
    </td>
    <td>
    <input type="checkbox" name="del[]" value="<?=$row['id'];?>">

    </td>
    <!--加入隱藏欄位id,用來確保此分頁的所有資料都有一個代表的值-->
    <input type="hidden" name="id[]" value="<?=$row['id'];?>">
    </tr>
    <?php } ?>
    </table>
    <!--顯示分頁連結html碼-->
    <div class="ct"><?=$links;?></div>

    <div class="ct">
    <input type="submit" value="確定修改">
    </div>
    </form>

  1. 建立 ./api/news_admin.php 檔案來處理文章編輯表單傳過來的資料
    api/news.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    include_once "../base.php";

    foreach($_POST['id'] as $id){
    if(isset($_POST['del']) && in_array($id,$_POST['del'])){
    $News->del($id);
    }else{
    $row=$News->find($id);
    $row['sh']=(isset($_POST['sh']) && in_array($id,$_POST['sh']))?1:0;
    $News->save($row);
    }
    }

    to("../backend.php?do=news");