# CodeIgniter 簡易留言板 **注意事項** 這個留言板沒有防止SQL Injection,純粹練習用。 ## 0.製作資料表 開一個資料表,有`comment_id`、`comment_author`、`comment_message`、`comment_datetime`等欄位。 `comment_id`設成AI(auto increment),新增留言時會自動增加。 `comment_datetime`的Default設成`CURRENT_TIMESTAMP`,新增留言時自動填入時間。 大概像這樣: | Column Name | Data Type | PK | NN | UQ | BIN | UN | ZF | AI | Default | |-------------|:---------:|----|----|----|-----|----|----|----|---------| | comment_id |INT()|v|v|||||v|| | comment_author |CHAR()||||||||| | comment_message |VARCHAR()||||||||| | comment_datetime |DATETIME||||||||CURRENT_TIMESTAMP| ## 1.顯示所有留言 1.1 controller部分 ``` PHP controllers/Guestbook.php public function index() { $q = $this->db->from("comment")->get(); //取出comment這個資料表的資料 $data['comments'] = $q->result(); $this->load->view('guestbook', $data); //把$data代到view裡 } ``` 1.2 view部分 用foreach迴圈把資料顯示出來。(範例code是用bootstrap套版) ``` PHP view/guestbook.php <?php foreach ($comments as $c) { ?> <div class="panel panel-default"> <div class="panel-heading"><?=$c->comment_author ?> <small><?=$c->comment_datetime ?> </small></div> <div class="panel-body"> <?=$c->comment_message ?> </div> </div> <?php } ?> ``` ## 2. 新增留言 2.0 製作表單和新增鈕 2.0.1 製作表單 在view資料夾底下新增form.php,製作一個簡易的表單。 form加上`method="POST"`、`action="<?=base_url("/guestbook/new_act")?>">`,等一會到guestbook.php新增一個叫`new_act`的function。 ``` PHP view/form.php <form class="form-horizontal" method="POST" action="<?=base_url("/guestbook/new_act")?>"> <div class="form-group"> <label for="inputAuthor" class="col-sm-2 control-label">暱稱</label> <div class="col-md-8"> <input name="author" type="author" class="form-control" id="inputAuthor" placeholder="您的暱稱"> </div> </div> <form class="form-horizontal"> <div class="form-group"> <label for="inputMessage" class="col-sm-2 control-label">留言</label> <div class="col-md-8"> <textarea name="message" class="form-control " rows="3"></textarea> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default">送出留言</button> </div> </div> </form> ``` 2.0.2 在guestbook.php中加入新增留言的按鈕 ``` <a class="btn btn-default" href="<?=base_url("/guestbook/new_comment/")?>">新增留言</a> ``` 2.1 controller部分 增加導向表單的function和新增留言的function ``` public function new_comment() //導向表單 { $this->load->view('form'); } public function new_act(){ //新增留言 $auth = $this->input->post("author"); $msg = $this->input->post("message"); $data = [ "comment_author" => $auth, "comment_message" => $msg ]; $this->db->insert('comment', $data); //新增進資料庫 redirect("../guestbook"); //導向guestbook } ```