:::

13-2 列出已報名名單

  1. 要先思考,要列在哪裡?(右邊空空...要不放在右側?)
  2. 好,放右側...所以,我們得做一個右側的樣板...就暫名為side_signups.tpl 好了。
  3. 那...請問何時要顯示已報名列表?(點進去活動時?)
  4. 好,那什麼情況才叫做「點進去活動時」?(網頁連到index.php,且 op=show_action 時!)
  5. 沒錯!所以,我們可以做個函數,放到 index.php,然後在op=show_action 時呼叫該函數,讓該函數把報名列表的值丟到樣板去列出。

一、修改流程

  1. 開啟 index.php 修改其流程,加入 list_signup($action_id);
    default:
        if ($action_id) {
            $op = 'show_action';
            show_action($action_id);
            list_signup($action_id);
        } else {
            $op = 'list_action';
            list_action();
        }
        break;

二、製作函數

  1. 一樣在 index.php 中,新增 list_signup() 函數
    //已報名名單
    function list_signup($action_id)
    {
        global $db, $smarty;
    
        $sql = "SELECT * FROM `signups` where `action_id` = '{$action_id}'";
        if (!$result = $db->query($sql)) {
            throw new Exception($db->error);
        }
        $signups = [];
        while ($signup = $result->fetch_assoc()) {
            $signups[] = $signup;
        }
        $smarty->assign('signups', $signups);
    }

     

三、製作樣板

  1. 新增 templates/side_signups.tpl
    {if $op=="show_action"}
      <h2>已報名名單</h2>
      <table class="table table-hover table-striped">
        <thead>
          <tr class="info">
            <th>姓名</th>
          </tr>
        </thead>
        <tbody>
        {foreach $signups as $signup}
            <tr>
              <td>{$signup.uid}</td>
            </tr>
        {/foreach}
        </tbody>
      </table>
    {/if}
  2. 我們在第一行判斷目前 op 狀態,只有在 show_action 時才顯示。

  3. 由於目前我們沒讀出姓名,暫時先顯示uid編號即可。

四、連結樣板

  1. 修改 index.tpl 將剛剛做的樣板連結上來
    <h2>Hello {$name}!</h2>
    {if $group}
      {include file='side_tools.tpl'}
      {include file='side_signups.tpl'}
    {else}
      {include file='side_login.tpl'}
    {/if}

五、練習

  1. 關於 side_signups.tpl 的顯示,是否可以改成判斷有無 $action_id 或者有無傳來 $signups 才顯示呢?其實是不妥的,答案...請想想。

:::

書籍目錄

展開 | 闔起

快速登入


http%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D745%26tbsn%3D27

計數器

今天: 489489489
昨天: 8625862586258625
總計: 8031096803109680310968031096803109680310968031096