codeigniter入門:ブログ作成編1に続いて、CRUDの残りのupdateとdeleteである、編集と削除ができるようにしていきます。
前回の続きからということで…
編集できるようにする
まずはコントローラーを作成します。
前回のformと大枠は同じです。
・applicaiton/controllers/blog.php
…省略… function update(){ $this->form_validation->set_rules('title', 'タイトル', 'required'); if($this->form_validation->run() == FALSE){ $this->load->view('blog_update'); }else{ $this->load->view('success'); } } …省略…
・applicaiton/views/blog_update.php
前回のblog_form.phpを名前を変えてアップロードします。
記事のデータをフォームに表示
一つ一つの記事のデータをデータベースから取り出せるようにmodelに追加します。
・application/models/blog_model.php
…省略… function get_blog($id){ $this->db->where('id', $id); $query = $this->db->get('blog_data'); return $query->row_array(); } …省略…
上記のActiveRecordで書いたプログラムをsql文でいうと
"SELECT * FROM blog_data where id = $id"
こんな感じで、記事の番号(id)を渡すことでidが等しい記事を取り出せるようになります。
コントローラー部分で個別記事のデータを取り出して、ビューに渡すようにします。
・applicaiton/controllers/blog.php
…省略… function update($id){ $this->form_validation->set_rules('title', 'タイトル', 'required'); if($this->form_validation->run() == FALSE){ $data['blog'] = $this->Blog_model->get_blog($id); $this->load->view('blog_update' ,$data); }else{ $this->load->view('success'); } } …省略…
URLにidを埋め込むことでblog記事のidをcontrollerで受け取ってます。
www.wwwwww.com/コントローラー名/メソッド名/引数 例:www.wwwwww.com/blog/update/1
そのidを使って個別記事を取り出し、viewに渡します。
・applicaiton/views/blog_update.php
のinputのvalueとtextareaの部分にデータを表示させます。
…省略… <h5>タイトル</h5><input type="text" name="title" value="<?php echo $blog['title'];?>" size="30" /> <h5>文章</h5> <textarea cols="30" name="description" rows="7"> <?php echo $blog['description']; ?></textarea> …省略…
データをupdateする
まだ、前回のデータが表示されるだけで、まだ編集されていません。
・application/models/blog_model.php
に編集させるメソッドを作ります。
insert_entryの部分と重複する部分があるので一つにまとめます。
…省略… function insert_entry(){ $this->data_post(); $this->db->insert('blog_data', $this); } function update_entry($id){ $this->data_post(); $this->db->where('id',$id); $this->db->update('blog_data',$this); } function data_post(){ $this->title = $_POST['title']; $this->description = $_POST['description']; } …省略…
一つにまとめるためにメソッドでdata_post部分を作って$this->data_post();を実行させます。
あとはActiveRecordのupdate(‘テーブル名’,$this)でデータを書き換えます。
・applicaiton/controllers/blog.php
…省略… function update($id){ $this->form_validation->set_rules('title', 'タイトル', 'required'); if($this->form_validation->run() == FALSE){ $data['blog'] = $this->Blog_model->get_blog($id); $this->load->view('blog_update' ,$data); }else{ $this->Blog_model->update_entry($id); $this->load->view('success'); } } …省略…
これでコントローラーのデータを書きかえれるようになりました。
最後にformからのデータのとび先を書き換えて完了です。
・applicaiton/views/blog_update.php
…省略… <?php echo form_open('blog/update/'.$blog['id'].''); ?> …省略…
※編集するリンクをblogのトップページに表示させます。
・application/views/blog.php
…省略… <td><a href="blog/update/<?php echo $blog['id']; ?>">編集</a></td> …省略…
これで編集できるようになりました。
データを削除する
データを削除する方法を解説していきます。
まずは、modelで削除するメソッドを作ります。
・application/models/blog_model.php
…省略… function delete_entry($id){ $this->db->where('id', $id); $this->db->delete('blog_data'); } …省略…
ここでもブログ記事番号を渡して、その記事のみを削除します。
あとは、これをcontrollerで実行できるようにします。
・applicaiton/controllers/blog.php
…省略… function delete($id){ $this->Blog_model->delete_entry($id); $this->load->view('success'); } …省略…
最後に削除のリンクをトップページに載せれば完了です。
・application/views/blog.php
…省略… <td><a href="blog/delete/<?php echo $blog['id']; ?>">削除</a></td> …省略…