:::

6-3-1 將所有文章變成二維陣列

  1. 修改 index.php,並定義一個 $all_news 陣列,然後將每讀取出來一筆的文章,都放入 $all_news
    1. $all_news[0] 代表第一篇文章
    2. $all_news[0]['title'] 則代表第一篇文章的標題
  2. 如此,$all_news 就是一個二維陣列,包含有所有文章的內容,接著用 assign() 將所有文章送至樣板檔。
    <?php
    require_once 'header.php';
    
    // 讀取所有資料
    $sql = "SELECT * FROM `articles` ORDER BY `date` DESC";
    $sth = $db->prepare($sql);
    $sth->execute();
    
    $all_news = [];
    while ($news = $sth->fetch(PDO::FETCH_ASSOC)) {
        $all_news[] = $news;
    }
    // 將所有文章送至樣板
    $smarty->assign('all_news', $all_news);
    $smarty->display('index.tpl');
    

     

  3. 另,為避免XSS跨域攻擊,讀出來的資料還是得過濾一下,我們可以將整個陣列塞入過濾(用FILTER_SANITIZE_STRING移除HTML標籤並保留換行符號),例如:
    $all_news = [];
    while ($news = $sth->fetch(PDO::FETCH_ASSOC)) {
        // 過濾整個陣列
        $news = filter_var_array($news, FILTER_SANITIZE_STRING);
        $all_news[] = $news;
    }
    

     

  4. 至此,所有文章內容已經送到 index.tpl,接著就修改樣板檔以便讀取出真正的內容

:::

書籍目錄

展開 | 闔起

https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1807

計數器

今天: 4193419341934193
昨天: 5069506950695069
總計: 5134641513464151346415134641513464151346415134641