Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันศุกร์ที่ 22 พฤศจิกายน พ.ศ. 2556

สวัสดี ชาวโลก กับ Codeigniter



ในบทความนี้เดี๋ยวผมจะแนะนำให้ท่านรู้จักกับ ชาวโลก แอ๊ะ! ยังไง... ไม่ใช่ เดี๋ยวเรามาสร้างเพจแรกกันด้วยการ แสดงคำว่า "Hello World" คำๆนี้สำหรับคนเรียนเขียนโปรแกรมจะต้องรู้จักเป็นอย่างดี ผมเองก็สงสัยว่าคำๆนี้มีที่มา อย่างไร ทำไมตอนเริ่มหัดเขียนโปรแกรมจะต้อง "Hello World" ตลอดเลย มาถึงตอนนี้ท่านอาจจะบ่นว่า "จะอะไรกันนักกันหนากับคำๆนี้" ผมก็ว่างั้น อิอิ.... ok เดี๋ยวเราไป Hello World กันดีกว่าครับ...

เริ่ม
ต่อไปนี้คือพาธของคำที่กล่าวถึง

models      คือ application/models/
controllers คือ application/controller/
views       คือ application/views/

ให้ท่านสร้างไฟล์ที่ controllers ตั้งชื่อว่า home.php ในไฟล์นี้เราจะเขียน class ขึ้นมาหนึ่ง class ชื่อว่า Home
ตามรูปแบบของ Codeigniter ดังนี้
class Home extends CI_Controller{
    
   // do someting....
    
}
ท่านอย่าลืมนะครับว่าชื่อ class กับชื่อไฟล์ต้องเหมือนกัน จากนั้นผมก็จะสร้าง method หรือ function ขึ้นมาแบบนี้
class Home extends CI_Controller{
    
    public function index()
    {
        echo "Hello World";
    }
    
}
ก่อนที่จะรันดูผลงานก็ให้ท่านเข้าไปที่ application/config/routes.php
ให้ปรับแก้บรรทัดนี้ 
$route['default_controller'] = "home";
ด้วยการเปลี่ยนจาก welcome มาเป็น home จากนั้นท่านก็ลองรันดู ถ้าไม่มีปัญหาอะไรท่านก็จะเห็นคำว่า Hello World

แต่หลักการแบบ MVC นั้น echo "Hello World"; จะต้องไปเก็บไว้ที่ views ถึงจะถูกต้องตามเจตนารมณ์ของ
Codeigniter ดังนั้นเราก็ต้องไปสร้างไฟล์ที่ views ชื่อว่า home_v.php ในไฟล์นี้ผมก็จะเขียนแบบนี้ 
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <h3>Hello World</h3>
        <?php
        echo "Hello World";
        ?>        
    </body>
</html>
จากนั้นเราก็ไปกำหนดให้ controllers เรียก views ขึ้นมาแสดงด้วยโค้ดนี้
$this->load->view('...ชื่อไฟล์ที่ต้องการเรียก...');
class Home extends CI_Controller{
    
    public function index()
    {
        $this->load->view('home_v');
    }
    
}
มาถึงตอนนี้ท่านก็สามารถที่จะใช้ controller เรียกไฟล์จาก views มาแสดงได้แล้ว

ส่งข้อมูลจาก controllers ไปให้ views ทำอย่างไร
เราจะสร้างตัวแปรขึ้นมา เก็บค่าคำว่า I Iove Codeigniter.แบบนี้
$data['mydata'] = "I Love Codeigniter.";
แล้วเราก็จะส่งไปแสดงที่ views แบบนี้
$this->load->view('home_v', $data);
ตัวอย่าง
class Home extends CI_Controller{
    
    public function index()
    {
        $data['mydata'] = "I Love Codeigniter.";
        $this->load->view('home_v', $data);
    }
    
}
จากนั้นเราก็ไป echo ตัวแปรที่เราสร้างขึ้นที่ views แบบนี้
<html>
    <head>
        <title></title>
    </head>
    <body>

        <?php
        echo $mydata;
        ?>

    </body>
</html>
ในกรณีที่ตัวแปรเก็บค่าแบบ Array แบบนี้ 
$data['mydata'] = array(
    'name' => 'bookneo',
    'password' => '123',
    'email' => 'bookneo@bookneo.com'
);
เราก็ยังคงส่งค่าไปแสดงที่ views แบบเดิม
$this->load->view('home_v', $data);
ตัวอย่าง
class Home extends CI_Controller{
    
    public function index()
    {
        
        $data['mydata'] = array(
        'name' => 'bookneo',
        'password' => '123',
        'email' => 'bookneo@bookneo.com'
        );
        
        $this->load->view('home_v', $data);
    }
    
}
แล้วเราก็ไปวนลูปแสดงที่ views ด้วย foreach แบบนี้
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <h3>Hello World</h3>
        <ul>
        <?php
           foreach($mydata as $item){
               echo '<li>'.$item.'</li>';
           }
        ?>        
        </ul>
    </body>
</html>
มาถึงตอนนี้เราก็สามารถส่งค่าต่างๆไปให้กับ view พร้อมทั้งใช้ controller เรียก view ขึ้นมาแสดงด้วย
สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ครับ....



Read More

วันพฤหัสบดีที่ 14 พฤศจิกายน พ.ศ. 2556

CodeIgniter เฟรมเวิร์คสำหรับพัฒนาเว็บแอปพลิเคชั่น



CodeIgniter เป็นเฟรมเวิร์คสำหรับพัฒนาแอปพลิเคชั่น - เครื่องมือ - สำหรับคนที่ต้องการสร้างเว็บไซค์โดยใช้ PHP , จุดประสงค์หลักของ Codeigniter ก็คือทำให้คุณพัฒนาโครงการ เร็วกว่าที่คุยเคยเขียนมา โดยเฉพาะอย่างยิ่งถ้าคุณเคยเขียนโค้ดด้วยความยากลำบาก โดยมีไลบรารี่ต่างๆจัดเตรียมไว้สำหรับงานทั่วๆไปที่ ต้องการ และยังเข้าใช้ไลบรารี่เหล่านี้ได้อย่างง่ายดาย ยังไม่พอ CodeIgniter ยังทำให้คุณสามารถมุ่งเน้นไปที่ความ คิดสร้างสรรค์กับโครงงานของคุณ โดยลดจำนวนโค้ดที่ต้องการลง สำหรับงานทุกชิ้น....

เหตผลอย่างเดียวที่ผมเลือกเขียนบทความเกี่ยวกับ Codeigniter คือ คู่มือเพียบ พร้อมที่จะให้เราเรียนรู้ได้อย่างง่ายดาย..
ก่อนอื่นท่านก็ต้องไปดาวน์โหลดเฟรมเวิร์คตัวนี้มาก่อน http://codeigniter.com/user_guide/installation/downloads.html
สำหรับบทความนี้ผมขอใช้เวอร์ชั่น CodeIgniter V 2.1 ครับ

สร้าง folder ชื่อว่า ci ไว้เว็บ root ของท่าน
จากนั้นก็แตกซิบไฟล์ที่ดาวน์โหลดออกมาเอาเฉพาะ application, system, index.php ไปใส่ไว้ในโฟล์เดอร์ ci



แล้วทดลองรันดู http://localhost/ci/index.php ถ้าไม่ติดปัญหาอะไรท่านก็จะเห็นรูปนี้



ทีนี้ผมต้องการตัด  index.php ออกให้เหลือเฉพาะ http://localhost/ci ผมก็จะเพิ่มไฟล์อีกไฟล์หนึ่งชื่อ
.htaccess ในไฟล์นี้ก็จะมีโค้ดแบบนี้ 
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 
เริ่มกำหนดค่าที่จำเป็นต่างๆ ให้ท่านเปิดเข้าไปที่โฟล์เดอร์ application/config/config.php
แก้ค่าต่างตามนี้
$config['base_url'] = 'http://localhost/ci';
$config['index_page'] = '';
$config['encryption_key'] = 'my_key';
เพียงเท่านี้ท่านก็สามารถเข้าเว็บได้ด้วย http://localhost/ci โดยไม่ต้องมี index.php อีกต่อไป

ให้ท่านเข้าไปที่ application/config/autoload.php เพื่อสั่งโหลด database, session แบบอัตโนมัติ
แก้ค่าต่างตามนี้
$autoload['libraries'] = array('database', 'session');
จากนั้นให้ท่านเข้าไปที่ application/config/database.php
กำหนดค่า database ของท่านลงไป
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '123';
$db['default']['database'] = 'ci';
สำหรับการตั้งค่าก็เพียงเท่านี้ก่อน ส่วนที่เหลือไว้ถึงตอนที่บทความเข้าไปเกี่ยวข้องก็ค่อยว่ากันไปตามนั้น
มีโฟล์เดอร์ด้วยกัน 3 โฟล์เดอร์ที่เราต้องทำความเข้าใจก่อนคือ  models, views, controllers
ซึ่งเป็นรูปแบบของสถาปัตยกรรมซอฟแวร์(software architecture) ที่มีการแบ่งแยกระบบออกเป็น 3 ส่วนหลักๆ
ได้แก่ data model, user interface, and control logic เรียกสั้นๆว่า MVC

M = Model,
V = View,
C = Controller

การทำงานร่วมกันของ MVC
Model เป็นส่วนของการติดต่อกับ database คอยจัดการกับข้อมูลเข้า-ออก ด้วยคำสั่งการประมวลผลภาษา SQL
View เป็นส่วนของการแสดงผลออกทาง web browser ซึ่งอยู่ในรูปแบบของภาษา HTML
Controller เป็นส่วนของการประสานงานระหว่าง user, model, view

เมื่อ User ร้องขอข้อมูลเข้ามา Controller ก็จะส่งคำร้องไปประมวลผลที่ Model แล้วส่งค่ากลับเพื่อให้ View นำไปแสดงต่อ User

ความเข้าใจแบบง่ายๆ คือ
เมื่อท่านนึกถึงฐานข้อมูล ก็ให้เขียนโค้ดที่ models
เมื่อท่านต้องการแสดงข้อมูลทาง web browser ก็ให้เขียนโค้ดที่ views
เมื่อท่านต้องการให้รับคำสั่งจาก user ก็ให้เขียนโค้ดที่ controllers

แต่(หมายเหตุ) การเชื่อมต่อกับฐานข้อมูลนั้นสามารถยืดหยุ่นกันได้ในทุกๆส่วนของการเขียนโปรแกรม....

สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ก่อน ไว้เจอกันในบทความต่อไปครับ......

Read More

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay