จากบทความที่แล้ว เราได้แนะนำ การติดตั้งและการใช้งาน CodeIgniter เบื้องต้น กันไปแล้ว ในบทความนี้ จะเป็นการแนะนำการ ใช้งาน CodeIgniter โดยจะ มีการทำงาน ร่วมกับ ฐานข้อมูล MySQL ในตัวอย่างจะเป็นการ ตั้งค่าการเชื่อมต่อฐานข้อมูล และ ตัวอย่างการ เขียนโปรแกรม เพิ่ม แก้ไข และ ลบ ข้อมูล ด้วย CodeIgniter Framework
ในตัวอย่างจะตั้งชื่อ Project ของเรา ชื่อว่า MyApp
การตั้งค่าการเชื่อมต่อฐานข้อมูล
เราสามารถตั้งค่าการเชื่อมต่อฐานข้อมูลได้ที่ไฟล์ MyApp/application/config/database.php
การตั้งค่า Base Site URL
เราสามารถตั้งค่า Url ของ Project ของเรา เพื่อให้สามารถเรียกใช้ใด้ทุกที่ใน Project สามารถตั้งค่าได้ที่ไฟล์ MyApp/application/config/config.php
ในตัวอย่างเราตั้งเป็น http://localhost/MyApp เนื่องจากระบบทำงานบนโปรแกรมจำลอง Web Server แต่หากเราจะนำระบบขึ้นไปไว้ใน Web Server หรือ hosting ต้องระบุ เป็น เลข Ip หรือ Domain ของ เครื่อง Server ครับ
สร้างฐานข้อมูล
ในตัวอย่างจะสร้างฐานข้อมูล ชื่อว่า Basic
ตัวอย่างเป็น ฐานข้อมูลอย่างง่าย โดยจะมีตาราง customer เก็บข้อมูล ชื่อ และ นามสกุลของ ลูกค้า
CREATE TABLE `customer` ( `id` int(11) NOT NULL, `first_name` varchar(255) NOT NULL, `last_name` varchar(255) NOT NULL, `phone` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `customer` ADD PRIMARY KEY (`id`); ALTER TABLE `customer` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
การสร้าง Controller Customer
สร้างไฟล์ Customer.php ไว้ที่ MyApp/application/controller/Customer.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Customer extends CI_Controller { function __construct() { parent::__construct(); //เรียกใช้งาน Customer_Model $this->load->model('Customer_Model'); //เรียกใช้งาน Class helper $this->load->helper('url'); $this->load->helper('form'); //เรียกใช้งาน Class database $this->load->database(); } //แสดงข้อมูล Customer ทั้งหมด public function index() { $query = $this->db->get("customer"); $data['result'] = $query->result(); $this->load->view('header'); $this->load->view('customer/customer_data',$data); $this->load->view('footer'); } public function add_customer_form(){ $this->load->view('header'); $this->load->view('customer/customer_add_form'); $this->load->view('footer'); } public function save_customer(){ $data = array( 'first_name' => $this->input->post('first_name'), 'last_name' => $this->input->post('last_name') ); $this->Customer_Model->insert($data); redirect('customer/index'); } public function edit_customer_form(){ $id = $this->uri->segment('3'); $data['result'] = $this->Customer_Model->selectOne($id); $this->load->view('header'); $this->load->view('customer/customer_edit_form',$data); $this->load->view('footer'); } public function save_edit_customer(){ $data = array( 'first_name' => $this->input->post('first_name'), 'last_name' => $this->input->post('last_name'), ); $id = $this->input->post('id'); $this->Customer_Model->update($data,$id); redirect('customer/index'); } public function delete_customer(){ $id = $this->uri->segment('3'); $this->Customer_Model->delete($id); redirect('customer/index'); } }
การสร้าง Customer_Model
สร้างไฟล์ Customer_Model.php ไว้ที่ MyApp/application/models/Customer_Model.php
<?php class Customer_Model extends CI_Model { function __construct() { parent::__construct(); } public function selectOne($id){ $query = $this->db->get_where("customer",array("id"=>$id)); $data = $query->result(); return $data; } public function insert($data) { if ($this->db->insert("customer", $data)) { return true; } } public function delete($id) { if ($this->db->delete("customer", "id = ".$id)) { return true; } } public function update($data,$id) { $this->db->set($data); $this->db->where("id", $id); $this->db->update("customer", $data); } } ?>
การสร้าง Layout Header และ Footer
สร้างไฟล์ header.php ไว้ที่ MyApp/application/views/header.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>Customer</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" > </head> <body> <div class="container">
สร้างไฟล์ footer.php ไว้ที่ MyApp/application/views/footer.php
<hr> <!-- Footer --> <footer> <div class="row"> <div class="col-lg-12"> <p>Your Website <?php echo date("Y")?></p> </div> </div> <!-- /.row --> </footer> </div> <!-- /.container --> </body> </html>
สร้าง Folder customer ไว้ที่ MyApp/application/views/customer
สร้างไฟล์ customer_data.php ไว้ที่ MyApp/application/views/customer/customer_data.php
แสดงข้อมูล รายชื่อ ทั้งหมด
<h3>Title</h3> <a href="<?php echo base_url()?>index.php/customer/add_customer_form" class="btn btn-info">ADD</a> <table class="table table-bordered" style="margin-top:10px"> <tr class="active"> <th>First Name</th> <th>Last Name</th> <th width="10%">Edit</th> <th width="10%">Delete</th> </tr> <?php foreach($result as $r){ echo "<tr>"; echo "<td>".$r->first_name."</td>"; echo "<td>".$r->last_name."</td>"; echo "<td><a href='".base_url()."index.php/customer/edit_customer_form/".$r->id."' class='btn btn-warning'>Edit</a></td>"; echo "<td><a href='".base_url()."index.php/customer/delete_customer/".$r->id."' onclick='return confirm(\"Confirm Delete Item\")' class='btn btn-danger'>Delete</a></td>"; echo "</tr>"; } ?> </table>
สร้างไฟล์ customer_add_form.php ไว้ที่ MyApp/application/views/customer/customer_add_form.php
Form สำหรับเพิ่มข้อมูล
<h3>Add Data</h3> <?php echo form_open('customer/save_customer'); echo form_label('First Name'); echo form_input(array('class'=>'form-control','name'=>'first_name')); echo "<br/>"; echo form_label('Last Name'); echo form_input(array('class'=>'form-control','name'=>'last_name')); echo "<br/>"; echo form_submit(array('id'=>'submit','value'=>'Add','class'=>'btn btn-success')); echo anchor(base_url().'index.php/customer', 'Back',array('class'=>'btn btn-default')); echo form_close(); ?>
สร้างไฟล์ customer_edit_form.php ไว้ที่ MyApp/application/views/customer/customer_edit_form.php
Form สำหรับแก้ไขข้อมูล
<h3>Edit Data</h3> <?php echo form_open('customer/save_edit_customer'); echo form_hidden('id',$result[0]->id); echo form_label('First Name'); echo form_input(array('class'=>'form-control','name'=>'first_name','value'=>$result[0]->first_name)); echo "<br/>"; echo form_label('Last Name'); echo form_input(array('class'=>'form-control','name'=>'last_name','value'=>$result[0]->last_name)); echo "<br/>"; echo form_submit(array('id'=>'submit','value'=>'Save Edit','class'=>'btn btn-warning')); echo anchor(base_url().'index.php/customer', 'Back',array('class'=>'btn btn-default')); echo form_close(); ?>