PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ใช้ Query Builder Class ในฟังก์ชั่นของ model ตอนที่ 2

04 September 2015 By


จากตอนที่แล้ว เราเรียนรู้วิธีการสร้างรูปแบบของ model เพื่อนำมาใช้งาน
ร่วมกับโปรเจ็คของเรา 
 
การสร้าง model และเรียกใช้งาน พร้อมแนวทางการประยุกต์ ตอนที่ 1 
http://www.ninenik.com/content.php?arti_id=667 via @ninenik
 
เนื้อหาตอนต่อจากนี้ จะเป็นการเข้าไปเขียนโค้ดให้กับฟังก์ชั่นของ model ที่เราสร้าง
โดยจะหยิบการศึกษาเกี่ยวกับ query builder class หรือ class เกี่ยวกับการใช้งานฐาน
ข้อมูลของ codeigniter มาใช้ด้วย
 
ก่อนเข้าไปในรายละเอียด ตามโตรงสร้างโปรเจ็คของเรา ให้เราสร้างตาราง tbl_service
เพื่อสำหรับเก็บข้อมูล "บริการของเรา" ตามนี้
 
CREATE TABLE IF NOT EXISTS `tbl_service` (
  `service_id` int(10) unsigned NOT NULL,
  `service_title` varchar(200) NOT NULL,
  `service_detail` text NOT NULL,
  `service_img` varchar(50) NOT NULL,
  `service_update` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `tbl_service`
  ADD PRIMARY KEY (`service_id`);

ALTER TABLE `tbl_service`
  MODIFY `service_id` int(10) unsigned NOT NULL AUTO_INCREMENT;
 
เสร็จแล้วให้เราเปิดไฟล์ model ของเรา ซึ่งชื่อ Service_model.php อยู่ในโฟลเดอร์
apps > models > admin
 
<?php
class Service_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
    }
    
    public function getlist(){
        echo "List";
    }    
    
    public function create(){
        echo "Create";
    }
    
    public function view(){
        echo "View";
    }    
    
    public function edit(){
        echo "Edit";
    }  
    
    public function delete(){
        echo "Delete";
    }        

}
 
 
ฟังก์ชั่นที่เราสนใจ และพูดถึงในตอนนี้คือ getlist() view() และ delete()
 
 

การแสดงข้อมูลด้วย query builder class

 
ฟังก์ชั่นแรกที่เราจะพูดถึง คือ getlist() เราจะใช้สำหรับดึงรายการข้อมูลของตาราง tbl_service
มาแสดง และเพื่อให้เห็นผลการทำงาน ให้เราลองเพิ่มข้อมูลสมมติเข้าไปในตาราง tbl_service
ผ่าน phpmyadmin ก่อนสัก 2-3 รายการ
 
    public function getlist(){
        echo "List";
    }    
 
ในการดึงข้อมูลเราจะใช้ 
 
$this->db->get()
 
ตัวอย่าง
 
$query = $this->db->get('tbl_service');  // คิวรี่คำสั่ง: SELECT * FROM tbl_service

$query = $this->db->get('tbl_service', 10, 20);
// คิวรี่คำสั่ง: SELECT * FROM tbl_service LIMIT 20, 10
 
 
ถ้าต้องการเลือกเฉพาะ ฟิลด์รายการที่ต้องการ จะใช้คำสั่ง
 
$this->db->select()
 
ตัวอย่าง
 
$this->db->select('title,detail');
$query = $this->db->get('tbl_service'); 
// คิวรี่คำสั่ง: SELECT title,detail FROM tbl_service
 
แบบนี้เป็นต้น 
* รายละเอียดฟังก์ชั่นเพิ่มเติม ให้ดูตัวอย่างในคู่มือของ codeigniter ในที่นี้จะใช้เท่าที่จำเป็นสำหรับโปรเจ็ค

 
สำหรับฟังก์ชั่น getlist() เราจะดึงข้อมูลทั้งหมด และ return ผลกลับมาในรุปแบบ array 
ดังนั้นเราจะใช้ 
 
$query = $this->db->get('tbl_service');
return $query->result_array();  // ส่งผลลัพธ์กลับมาเป็น array ข้อมูลไว้ใช้งาน
 
จะได้ฟังก์ชั่น getlist() เป็นดังนี้
 
    public function getlist(){
        $query = $this->db->get('tbl_service');
        return $query->result_array();
    }    
 

การแสดงข้อมูลด้วย query builder class แบบมีเงื่อนไข

 
ฟังก์ชั่นที่สองคือ view()  เนื่องจากฟังก์ชั่นนี้เราใช้สำหรับดังข้อมูลอ้างอิงเงื่อนไข service_id
ดังนั้นจำเป็นต้องกำหนด parameter เพิ่มเติมให้ฟังก์ชั่นนี้ 
 
    public function view($id){
        echo "View";
    }    
 
และเราจะใช้ การดังข้อมูลด้วย
 
$this->db->get_where()
 
ตัวอย่างการใช้งาน
 
$query = $this->db->get_where('tbl_service',array('service_id'=>'1'));
// คิวรี่คำสั่ง: SELECT * FROM tbl_service WHERE service_id=1
 
ดั้งนั้นในฟังก์ชั่น view() ของเราจะได้เป็น
 
    public function view($id){  // มี $id เป็น parameter ไว้กำหนดเงื่อนไข
        $query = $this->db->get_where('tbl_service',array('service_id'=>$id));
        return $query->row_array(); // ส่งข้อมูลผลัพธ์กลับเป็น array แถวข้อมูล
    }    
 

การลบข้อมูลด้วย query builder class

 
ส่วนสุดท้ายที่จะกล่าวถึงคือฟังก์ชั่น delete() สำหรับฟังก์ชั่นนี้จะเป็นการลบรายการข้อมูล 
อ้างอิงจาก service_id เช่นเดียวกับ view ดังนั้นจึงต้องมีการกำหนด parameter เพื่อรับค่า
จะได้เป็น
 
    public function delete($id){
        echo "Delete";
    }        
 
และเราจะใช้คำสั่งต่อไปนี้ในการลบข้อมูล
 
$this->db->delete()
ตัวอย่างการใช้งาน
 
$this->db->delete('tbl_service', array('service_id' => '1'));  
// คิวรี่คำสั่ง: // DELETE FROM tbl_service WHERE service_id = 1
 
ดั้งนั้นในฟังก์ชั่น delete() ของเราจะได้เป็น
 
    public function delete($id){
        return $this->db->delete('tbl_service', array('service_id' =>$id)); 
        // คืนค่าผลการคิวรี่
    }        
 
 
และเราจะได้ไฟล์ Service_model.php สำหรับใช้งานเบื้องต้นดังนี้
 
<?php
class Service_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
    }
    
    public function getlist(){
        $query = $this->db->get('tbl_service');
        return $query->result_array();
    }    
    
    public function create(){
        echo "Create";
    }
    
    public function view($id){  // มี $id เป็น parameter ไว้กำหนดเงื่อนไข
        $query = $this->db->get_where('tbl_service',array('service_id'=>$id));
        return $query->row_array(); // ส่งข้อมูลผลัพธ์กลับเป็น array แถวข้อมูล
    }    
    
    public function edit(){
        echo "Edit";
    }  
    
    public function delete($id){
        return $this->db->delete('tbl_service', array('service_id' =>$id)); 
        // คืนค่าผลการคิวรี่
    }        

}
 

 

การเรียกใช้งาน model

 
เมื่อเราได้ฟังก์ชั่นเบื้องต้นของ model แล้วต่อไปเราจะเรียกใช้งานในไฟล์ views 
ให้เราเปิดไฟล์ admin_service.php ในโฟลเดอร์ apps > views > admin 
 
ส่วนแรก เราจะเรียกใช้ ฟังก์ชั่น getlist() ของ model เพื่อนำข้อมูลมาแสดงในส่วน $action เท่ากับ null
โดยรุปแบบการเรียกใช้งาน model เป็นดังนี้
 
$this->ชื่อ model -> ชื่อฟังก์ชั่น
 
ดังนั้นเราจะได้เป็น
 
$result = $this->service_model->getlist();
 
เมื่อนำมาใช้งานในส่วนของ $action เท่ากับ null เราจะได้เป็นดังนี้
 
<?php if($action==null){?>
<?php
$result = $this->service_model->getlist();
?>
<a href="<?=base_url('admin/service/create')?>" class="btn btn-primary btn-sm">Create</a>
<br><br>
<table class="table table-striped table-bordered table-condensed">
    <thead>
        <tr>
            <th width="50" class="text-center">#</th>
            <th>Title</th>
            <th width="150" class="text-center">Modify Date</th>
            <th width="150" class="text-center">Manage</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $i_num=0;
        if(count($result)>0){
            foreach($result as $row){
                $i_num++;
        ?>
        <tr>
            <td class="text-center"><?=$i_num?></td>
            <td><?=$row['service_title']?></td>
            <td class="text-center"><?=$row['service_update']?></td>
            <td class="text-center">
                <a href="<?=base_url('admin/service/edit/'.$row['service_id'])?>" class="btn btn-success btn-sm">
                <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                </a>
                &nbsp;&nbsp;
                 <a href="<?=base_url('admin/service/delete/'.$row['service_id'])?>" class="btn btn-danger btn-sm">
                <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                </a>
                
            </td>
        </tr>
        <?php } ?>
        <?php } ?>
    </tbody>
</table>
<?php } ?>
 
จากโค้ด การทำงานก็คือ ไปดึงข้อมูลจากตาราง tbl_service แล้วคืนค่ากลับมาเป็น array ข้อมูล
มาเก็บไว้ในตัวแปร $result จากนั้นเราก็ทำการวนลูป แสดงค่าตัวแปร array ด้วยคำสั่ง foreach
 
 
ส่วนที่สอง เราจะเรียกใช้งานฟังก์ชั่น delete() ของ model ในส่วนของ $action เท่ากับ delete
รูปแบบการใช้งาน
 
$query = $this->service_model->delete($id);  
       
 
เมื่อนำมาใช้งานในส่วนของ $action เท่ากับ delete เราจะได้เป็นดังนี้
 
<?php if($action=="delete"){?>
<?php
$query = $this->service_model->delete($id);                                  
?>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<?php if($query){?>
<div class="bg-success text-center" style="padding:10px;">
    <p class="text-success">Delete data complete</p>
    <a href="<?=base_url('admin/service')?>" class="text-success">< Back > </a>
</div>
<?php } ?>
<?php } ?>
 
จากโค้ด การทำงาน เมื่อมีการลบข้อมูล และส่งกลับค่าการคิวรี่มา ก็จะแสดงข้อความ
แจ้งว่าข้อมูลได้ถูกลบเรียบร้อยแล้ว
 
ส่วนที่สาม ส่วนสุดท้ายของการเรียกใช้งานที่จะกล่าวถึงในเนื้อหาตอนนี้คือ การใช้งานฟังก์ชั่น view() ของ
model ในส่วนของ $action เท่ากับ edit โดยในที่นี้เราจะยังไม่เอาข้อมูลมาใช้โดยตรง แต่จะแสดงผล
ด้วยตัวอย่างข้อมูล array ที่ได้ก่อน
รูปแบบการใช้งาน
 
$row = $this->service_model->view($id);         
 
เมื่อนำมาใช้งานในส่วนของ $action เท่ากับ edit เราจะได้เป็นดังนี้
 
<?php if($action=="edit"){?>
<pre>
<?php
$row = $this->service_model->view($id);         
print_r($row);
?>
</pre>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<form action="<?=base_url('admin/service/edit/'.$id)?>" method="post" enctype="multipart/form-data">
<table class="table table-bordered">
<thead>
    <tr class="active">
        <th colspan="2">Edit Service</th>
    </tr>
</thead>
<tbody>
    <tr >
        <th width="120">Title:</th>
        <td>
            <input type="text" name="service_title" style="width:500px;">
        </td>
    </tr>
    <tr>
        <th width="120">Detail:</th>
        <td>
        <textarea name="service_detail" cols="85" rows="10"></textarea>
        </td>
    </tr>    
    <tr>
        <th width="120">Images:</th>
        <td>
        <input type="file" name="service_image" >
        </td>
    </tr>    
    <tr>
        <th></th>
        <td>
            <input type="submit" class="btn btn-success btn-sm" name="btn_add" value="Edit Service">
        </td>
    </tr>
</tbody>
</table>   

        
</form>
<?php } ?>
 
จากโค้ด หลักการทำงาน จะทำการดึงข้อมูลจากตาราง tbl_service โดยเงื่อนไข service_id เท่ากับค่า
ตัวแปร $id ที่ส่งมา และในตัวอย่าง เป็นการรับค่าเป็นข้อมูลเดียว เรารับค่าด้วยตัวแปร $row
และเมื่อทำการ print_r() ข้อมูลดูก็จะได้รายการข้อมูลในรูปแบบ array ไว้ใช้งาน

 
สุดท้ายเราจะได้ไฟล์ admin_service.php ในโฟลเดอร์ apps > views > admin 
เบื้องต้นดังนี้
 
<div class="container">
    
Service  
<br><br>
<?php if($action==null){?>
<?php
$result = $this->service_model->getlist();
?>
<a href="<?=base_url('admin/service/create')?>" class="btn btn-primary btn-sm">Create</a>
<br><br>
<table class="table table-striped table-bordered table-condensed">
    <thead>
        <tr>
            <th width="50" class="text-center">#</th>
            <th>Title</th>
            <th width="150" class="text-center">Modify Date</th>
            <th width="150" class="text-center">Manage</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $i_num=0;
        if(count($result)>0){
            foreach($result as $row){
                $i_num++;
        ?>
        <tr>
            <td class="text-center"><?=$i_num?></td>
            <td><?=$row['service_title']?></td>
            <td class="text-center"><?=$row['service_update']?></td>
            <td class="text-center">
                <a href="<?=base_url('admin/service/edit/'.$row['service_id'])?>" class="btn btn-success btn-sm">
                <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                </a>
                &nbsp;&nbsp;
                 <a href="<?=base_url('admin/service/delete/'.$row['service_id'])?>" class="btn btn-danger btn-sm">
                <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                </a>
                
            </td>
        </tr>
        <?php } ?>
        <?php } ?>
    </tbody>
</table>
<?php } ?>

<?php if($action=="create"){?>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<form action="<?=base_url('admin/service/create')?>" method="post" enctype="multipart/form-data">
<table class="table table-bordered">
<thead>
    <tr class="active">
        <th colspan="2">Add New Service</th>
    </tr>
</thead>
<tbody>
    <tr >
        <th width="120">Title:</th>
        <td>
            <input type="text" name="service_title" style="width:500px;">
        </td>
    </tr>
    <tr>
        <th width="120">Detail:</th>
        <td>
        <textarea name="service_detail" cols="85" rows="10"></textarea>
        </td>
    </tr>    
    <tr>
        <th width="120">Images:</th>
        <td>
        <input type="file" name="service_image" >
        </td>
    </tr>    
    <tr>
        <th></th>
        <td>
            <input type="submit" class="btn btn-success btn-sm" name="btn_add" value="Add Service">
        </td>
    </tr>
</tbody>
</table>    
    

</form>
<?php } ?>


<?php if($action=="edit"){?>
<pre>
<?php
$row = $this->service_model->view($id);         
print_r($row);
?>
</pre>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<form action="<?=base_url('admin/service/edit/'.$id)?>" method="post" enctype="multipart/form-data">
<table class="table table-bordered">
<thead>
    <tr class="active">
        <th colspan="2">Edit Service</th>
    </tr>
</thead>
<tbody>
    <tr >
        <th width="120">Title:</th>
        <td>
            <input type="text" name="service_title" style="width:500px;">
        </td>
    </tr>
    <tr>
        <th width="120">Detail:</th>
        <td>
        <textarea name="service_detail" cols="85" rows="10"></textarea>
        </td>
    </tr>    
    <tr>
        <th width="120">Images:</th>
        <td>
        <input type="file" name="service_image" >
        </td>
    </tr>    
    <tr>
        <th></th>
        <td>
            <input type="submit" class="btn btn-success btn-sm" name="btn_add" value="Edit Service">
        </td>
    </tr>
</tbody>
</table>   

        
</form>
<?php } ?>

<?php if($action=="delete"){?>
<?php
$query = $this->service_model->delete($id);                                  
?>
<a href="<?=base_url('admin/service')?>" class="btn btn-warning btn-sm">< Back</a>
<br><br>
<?php if($query){?>
<div class="bg-success text-center" style="padding:10px;">
    <p class="text-success">Delete data complete</p>
    <a href="<?=base_url('admin/service')?>" class="text-success">< Back > </a>
</div>
<?php } ?>
<?php } ?>

</div>
 
ขอจบในส่วนของ 3 ฟังก์ชั่นเบื้องต้น กับการใช้งาน query builder class ใน model ไว้เท่านี้
สำหรับในส่วนของ create() และ edit() จะขอกล่าวในลำดับต่อไป เพราะ
ในสองส่วนี่เหลือนี้ เราจะศึกษาเรื่องของการตรวจสอบฟอร์มข้อมูล ก่อนทำการบันทึกด้วย รอติดตาม

Tags:: query builder codeigniter

เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





URL สำหรับอ้างอิง