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

วันศุกร์ที่ 25 ตุลาคม พ.ศ. 2556

สมัครสมาชิก และ Login แบบ OOP PHP



จากบทความก่อนผมก็จบทิ้งท้ายไว้ด้วยประโยคว่า "เอาไว้เจอกันในบทควาามหน้าครับ วิธีการ Login แบบ OOP PHP" ทีนี้ผมก็มาคิดว่าทำ Login อย่างเดียวมันน้อยไปหรือเปล่า ก็เลยขอเพิ่มวิธีลงทะเบียนสมัครสมาชิกด้วยก็แล้วกัน เพราะว่าผมคงจะขอจบบทความ ที่เกี่ยวกับ OOP PHP ไว้เพียงแค่บทนี้ คิดว่านะครับผม.. บทความนี้เป็นเพียงวิธีการอย่างง่ายเท่านั้นนะครับ เพราะผมก็ทำอย่างยากไม่เป็นเสียด้วยซิ อิอิ... LET'S GO->

SQL สำหรับทดสอบ
CREATE TABLE `members` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `emailaddress` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`user_id`)
);
ไฟล์ที่ต้องมี database.php, MySqlConn.php, ซึ่งเป็นไฟล์ที่ยกมาจากบทความก่อนหน้านี้ที่เกี่ยวกับ OOP
ก่อนที่จะเริ่มผมก็ต้องขอ อัพเดท function where(); ก่อนถามว่าทำไม ก็เพราะว่าฟังก์ชั่นเดิมไม่สามารถใช้
Logical Operators ได้คือ and กับ or  ดังนั้นผมก็จะอัพเดทเสียใหม่ดังนี้

ไฟล์ MySqlConn.php
public function where($data, $opera='')
    {
        if(!empty($data)){
            $keys = array_keys($data);
            $where = "WHERE ";
            for($i = 0; $i < count($data); $i++)  
           {  
                if(is_string($data[$keys[$i]])){  
                    $where .= $keys[$i]."='".$data[$keys[$i]]."'";  
                    if($i != count($data)-1){ $where .= " $opera ";}  
                }                
               
            }
            
            $this->_where = $where;
        }
    }
จากโค้ดด้านบน จะรับ parameter มาสองตัว ตัวแรกเป็นแบบ array ส่วนตัวที่สองเป็น Operators พอตอนใช้งานเราก็
เรียกแบบนี้
$data = array(
'username' => $_POST['username'],
'password' => $_POST['password'],
);

$Db->where($data, 'or');
ok ครับเรามาเริ่มวิธีสมัครสมาชิกแบบ OOP ได้แล้วซึ่งขอบอกว่าไม่ยากเลยครับ

เราจะสร้าง form กันก่อนแแบบนี้
<div id="signup">
<form name="form1" method="post" action="index.php">
    name: <input type="text" name="username"/><br/>
    pass: <input type="password" name="password"/><br/>
    pass confirm: <input type="password" name="conpassword"/><br/>
    email: <input type="text" name="email"/><br/>
    <input type="submit" name="signup" value="Submit"/>
</form>
</div>  
หลังจากนั้นเราก็จะรับค่า username กับ email ไปเช็คกับฐานข้อมูล ว่า email หรือ username นี้มีการใช้งานไปแล้วหรือยัง
แบบนี้
เริ่มด้วยการนำเข้าไฟล์ MySqlConn.php
include_once('MySqlConn.php');
ตามด้วยการสร้างอ็อบเจกต์
$Db = new MySqlConn;

if (isset($_POST['signup'])) {

$data = array(
    'username' => $_POST['username'],
    'emailaddress' => $_POST['email'],
);

$Db->where($data, 'or');
$num = $Db->num_rows('members');
if ($num > 0) {
   echo '<font color="red">Sorry Username หรือ Email นี้ได้ถูกใช้งานไปแล้ว</font>';
}
else{
   $data = array(
   'username' => $_POST['username'],
   'password' => $_POST['password'],
   'emailaddress' => $_POST['email'],
   );

   $Db->insert('members', $data);

}

}
จากโค้ดด้านบนเราส่ง username กับ email ไปเช็คว่ามีการใช้งานแล้วหรือยังด้วยฟังก์ชั่นสองฟังก์ชั่นคือ
$Db->where($data, 'or');
$num = $Db->num_rows('members');//นับแถว
ถ้า $num มากกว่า 0 ก็คือ 1 ขึ้นไปแสดงว่าถูกใช้งานแล้ว แต่ถ้าเป็น 0 ก็ให้ insert ข้อมูลที่ต้องการด้วยฟังก์ชั่น
$Db->insert('members', $data);
เพียงแค่นี้เราก็ได้ระบบการสมัครสมาชิกแล้ว ที่เหลือเราก็เพิ่มเติมการ validate ในรูปแบบต่างตามต้องการ ตัวอย่าง

ไฟ register.php
<h1>Signup Here</h1>
<?php
include_once('MySqlConn.php');
$Db = new MySqlConn;

if (isset($_POST['signup'])) {

$data = array(
    'username' => $_POST['username'],
    'emailaddress' => $_POST['email'],
);
$Db->where($data, 'or');
$num = $Db->num_rows('members');
if ($num > 0) {
    echo '<font color="red">Sorry Username หรือ Email นี้ได้ถูกใช้งานไปแล้ว</font>';
}
else {
    $data = array(
        'username' => $_POST['username'],
        'password' => $_POST['password'],
        'emailaddress' => $_POST['email'],
    );
    if(!empty($data['username']) && !empty($data['password'])
     && !empty($data['emailaddress'])  ){

    if($_POST['password'] == $_POST['conpassword']){    
    $Db->insert('members', $data);
    echo "<font color='blue'>Success ขอบคุณที่ท่านได้สมัครสมาชิกกับเรา</font>";
    }
    else{
        echo '<font color="red">การยืนยัน Password ไม่ตรงกัน</font>';
    }

    }
    else{
        echo '<font color="red">กรุณากรอกข้อมูลให้ครบ</font>';
    }
}
}
?>
เสร็จแล้วสำหรับการสมัครสมาชิก ต่อไปก็ Login ต่อเลยครับ อันนี้ง่ายมากๆเลยครับ เพราะเราก็อปเอาโค้ดวิธีสมัครสมาชิก
มาใช้นั่นเอง แต่คราวนี้เราใช้ operator เป็น and แบบนี้ $Db->where($data, 'and');
สร้าง form กันก่อน

ไฟ login.php
<h1>Login Here</h1>
<div id="login">
<form name="form1" method="post" action="index.php">
    name: <input type="text" name="username"/><br/>
    pass: <input type="password" name="password"/><br/>
    <input type="submit" name="login" value="Submit"/>
</form>
</div>  
จากนั้นสร้างอ็อบเจ็กต์
<?php
$DbLogin = new MySqlConn;
if (isset($_POST['login'])) {

$data = array(
    'username' => $_POST['username'],
    'password' => $_POST['password'],
);

$DbLogin->where($data, 'and');
$num = $DbLogin->num_rows('members');
if ($num > 0) {
    echo '<font color="blue">ไชโย Login สำเร็จแล้ว....</font>';
}
else {
    echo 'อ้าว!.. Username หรือ Password ไม่ถูกต้องนะ';
}

}
?>
เพียงเท่านี้เราก็ได้วิธีการ Signup และ Login แบบ OOP ไว้ใช้งานแล้ว ที่เหลือท่านก็ลองไปปรับปรุง พัฒนากัน
ต่อไปดูนะครับ แล้วอย่าลืมนำมา บอกเล่าเก้าสิบ เฮ้ย!... บอกเล่าสู่กันฟังบ้างนะครับ

สำหรับบทความที่เกี่ยวกับ OOP PHP Object-oriented programming ก็คงจะจบไว้ก่อนเพียงเท่านี้....
ผิดพลาดอย่างไรก็ต้องขอ อภัย ด้วยครับ......



Read More

วันอาทิตย์ที่ 13 ตุลาคม พ.ศ. 2556

วิธี Insert Update Delete (OOP PHP Part3)



บทความนี้เกี่ยวข้องกับการ insert, delete, update ข้อมูลแบบ OOP PHP เป็นความต่อเนื่องจากบทความก่อน ซึ่งเราต้องใช้งาน property, function บางตัวของบทความก่อนด้วย......

ไฟล์ที่ต้องมี index.php, database.php, MySqlConn.php ซึ่งเป็นไฟล์ที่ยกมาจากบทความก่อนหน้านี้
ฟังก์ชั่น insert()
เริ่ม
ผมจะสร้าง function เพิ่มที่ไฟล์ MySqlConn.php สำหรับ insert ข้อมูลลง database แแบบนี้
function insert($tableName, $data)
{
//บันทึกลงฐานข้อมูล....
}
function นี้รับ parameter มา 2 ค่าคือ ตารางฐานข้อมูล กับ ฟิลด์และข้อมูลที่ส่งมาแบบ Array
ดังนั้นเราก็ต้องมาแยก Array ออกเป็น 2ชุด ชุดแรกเป็น keys ชุดที่2เป็น value ด้วยฟังก์ชั่น  2ฟังก์ชั่นคือ
$keys = array_keys($data); //เก็บ keys ของ Array

$value = array_values($data); //เก็บ values ของ Array

แล้วเราก็นำมาวนลูปด้วย froeach() เพิ่มเครื่องหมาย ',' เข้าไปด้วย แบบนี้
foreach( $keys AS $key => $k ) {$sql .= $k;
if ( $key !== count($keys)-1 ) $sql.= ', ';}

foreach( $value AS $val => $v ) {$sql .= "'".$v."'";
if ( $val !== count($value)-1 ) $sql.= ', ';}
จากนั้นก็นำมาใส่ในฟังก์ชั่น insert() ก็จะออกมาในรูปแบบนี้
ไฟล์ MySqlConn.php
public function insert($tableName, $data)
    {
        if(!empty($data)){
            
        $keys = array_keys($data);   
        $value = array_values($data);       
        
        $sql = "INSERT INTO $tableName ";
        $sql .= "(";
        foreach( $keys AS $key => $k ) {$sql .= $k;
        if ( $key !== count($keys)-1 ) $sql.= ', ';}
        $sql .= ")";
        $sql .= "VALUES ";
        $sql .= "(";
        foreach( $value AS $val => $v ) {$sql .= "'".$v."'";
        if ( $val !== count($value)-1 ) $sql.= ', ';}
        $sql .= ")";
        if($sql){          
        $this->_mysql->query($sql);
        }
        }
    }
พอตอนเรียกใช้งานเราก็แค่ส่งชื่อ ตารางฐานข้อมูล พร้อมกับค่าแบบ Array แบบนี้
ไฟล์ index.php
$data = array(
'test' => 'test insert',
); 

$Db = new MySqlConn; 
$Db->insert('test', $data);
จากโค้ดด้านบน
มีความหมายว่า insert into test (title) values ('test insert')
เพียงแค่นี้ เราก็สามารถ insert ข้อมูลลงฐานข้อมูลได้แล้ว แล้วก็เป็นการ insert ข้อมูลแบบ Array ง่ายๆ
สบายๆ

ฟังก์ชั่น update()
เริ่ม
ผมก็จะเริ่มสร้างฟังก์ชั่น update() แบบนี้
function update($tableName, $data)
{
//อัพเดทลงฐานข้อมูล....
}
ดูเพียงแค่นี้ท่านก็คงร้อง อ๋อ! ครับผมเหมือนกันกับ function insert() เพียงแต่คราวนี้ผมใช้ for ในการวนลูป
พร้อมกับเพิ่ม $this->where เข้าไปด้วย ซึ่ง property ตัวนี้เราได้สร้างไว้แล้วในบทความก่อนเพียงแต่หยิบมันมาใช้ก็เท่านั้น
public function update($tableName, $data)
    {
        if(!empty($data)){
        $keys = array_keys($data);
        
       $sql = "UPDATE $tableName SET ";
            for($i = 0; $i < count($data); $i++)  
           {  
                if(is_string($data[$keys[$i]])){  
                    $sql .= $keys[$i]."='".$data[$keys[$i]]."'";  
                    if($i != count($data)-1){$sql .= ',';}     
                }   
            }
            
            $sql .= $this->_where;
            
        if($sql){ 
        $this->_mysql->query($sql);
        }
        }
    }
เพียงเท่านี้เราก็ได้ function update() ไว้ใช้งานแล้ว พอตอนเรียกใช้งาน เราก็ส่งชื่อ ตารางฐานข้อมูล พร้อมกับค่าแบบ Array แบบนี้
ไฟล์ index.php
$data = array(
'test' => 'test update',
); 

$Db = new MySqlConn; 
$Db->where('id_update', 'id');
$Db->update('test', $data);
จากโค้ดด้านบน
มีความหมายว่า update test  set 'test' = 'test update' where id_update = 'id'

ฟังก์ชั่น delete()
เริ่ม
สร้างฟังก์ชั่น delete() แบบนี้
public function delete($tableName)
{
    if(!empty($tableName)){
    $sql = "delete from $tableName $this->_where";
    $this->_mysql->query($sql);
    }
}
ฟังก์ชั่น delete() ของเราก็มีแค่นี้ รับ parameter มา 1ค่าคือตารางฐานข้อมูล พอตอน delete เราก็เรียกใช้
property $this->where แค่นี้ พอตอนเรียกใช้
$Db = new MySqlConn; 
$Db->where('id_test', 'id');
$Db->delete('test');
จากโค้ดด้านบน
มีความหมายว่า delete from test where id_test = 'id'
เพียงแค่นี้เราก็มีโค้ดสำหรับไว้ลบแถวในฐานข้อมูลได้แบบง่ายๆ สบายๆอีกแล้ว...

เดี๋ยวผมขอเพิ่มเติมฟังก์ชั่นอีกสัก 1ฟังก์ชั่น คือ num_rows() เอาไว้นับแถวในฐานข้อมูล
รูปแบบ
public function num_rows($tableName)
{
    $this->_tableName = $tableName;
    $sql = 'SELECT * FROM';
    $query = $this->_mysql->query("$sql $this->_tableName $this->_where");
    $results = mysqli_num_rows($query);

    return $results;
}
ฟังก์ชั่นนี้ไม่มีอะไรมากครับ แค่รับตารางฐานข้อมูลเข้ามาแล้วก็ นับแถวจากนั้นก็ return ค่าออกไป โดยที่เราสามารถที่จะใช้
where ได้ พอตอนใช้งาน
$Db = new MySqlConn; 
$Db->where('username', 'bookneo');
$Db->num_rows('test');
จากโค้ดด้านบน มีความหมายว่า
$sql = select * from test where username = 'bookneo'
mysql_num_rows($sql)

สำหรับการสร้าง ฟังก์ชั่นก็มีเพียงเท่านี้ที่เหลือท่านก็ลองปรับปรุงเปลี่ยนแปลง เอาไปใช้ได้ตามใจชอบ และท้ายที่สุดท่านก็อาจจะมี framework เล็กๆเป็นของตัวเองในที่สุด....

บทความนี้ก็จบลงเพียงเท่านี้ คงจะเหลืออีกสัก 1 บทความที่เกี่ยวกับ OOP คือตัวอย่างการนำไปใช้ เอาไว้เจอกันในบทควาามหน้าครับ วิธีการ Login แบบ OOP PHP .....




Read More

วันเสาร์ที่ 5 ตุลาคม พ.ศ. 2556

วิธีดึงข้อมูลจาก Database มาแสดงแบบ OOP PHP Part2



ตอนแรกคิดว่าอาจจะได้เขียนบทความนี้ก็ตอนปีใหม่นู้น...ละ แต่คิดไปคิดมา ฮึม..! มันน่าจะมีบทความส่งท้ายบีเก่าสัก 1 บทความนะ ก็เลยเลือกเอาวันนี้แหละ วันที่ 29 ธันวาคม 2554 จบบทความนี้ก็ไว้เจอกันอีกทีปีหน้าแล้วกันครับ... สำหรับบทความนี้ก็ยังคงเป็นเรื่องของการ ดึงข้อมูลจาก Database มาแสดงเหมือนเดิม เพียงแต่เป็นการเชื่อมต่อฐานข้อมูลแบบ OOP ชนิดเต็มรูปแบบ แล้วก็แบบง่ายๆเสียด้วย ผมรู้สึกรักการเขียน php แบบ Object-oriented programming ขึ้นมาเสียแล้วซิ ไปดูกันครับ....

ก่อนเริ่มท่านคงจะจำได้ ว่าบทความก่อนๆ หน้านี้ที่ผมพูดถึงฟังก์ชั่น 2 ฟังก์ชั่น คือ setName กับ getName ซึ่งเราจะได้เห็น
ลักษณะการใช้งาน ที่เหมือนกับ 2 ฟังก์ชั่นนี้ เพียงแต่เปลี่ยนชื่อไปเท่านั้นเองครับ...

เริ่ม
ผมจะสร้างไฟล์ขึ้นมา 3 ไฟล์ คือ index.php, database.php, MySqlConn.php
index.php เอาไว้ส่ง parameter และแสดงข้อมูล
database.php เอาไว้เก็บข้อมูล database
MySqlConn.php เป็น Class เก็บฟังก์ชั่นต่างๆ

เราจะเริ่มกันที่ไฟล์ database.php ก่อนดังนี้
define("host", "localhost");
define("username", "root");
define("password", "123");
define("db", "oop");
define คือ function ที่ใช้สำหรับการประกาศค่าตัวแปรคงที่ เมื่อเราประกาศค่าตัวแปรด้วยฟังก์ชั่นนี้  ตัวแปรจะถูกเก็บไว้ที่หน่วยความจำ
ทำให้เราสามารถเรียกใช้ค่าตัวแปรนี้ได้ทั้งภายในและภายนอกของ Class หรือ Function ตลอดเวลา

จากนั้นผมก็ไปนำเข้าไฟล์นี้ที่ไฟล์ MySqlConn.php ดังนี้

ไฟล์ MySqlConn.php
require_once('database.php');
ตามด้วยการสร้าง Class, function และ property 1ตัวกำหนดให้เป็น protected เอาไว้ใช้งานภายใน Class
และ SubClass เท่านั้น

ไฟล์ MySqlConn.php
require_once('database.php');

class MySqlConn
{ 

protected $_mysql;

public function __construct()
{

}

public function query()
{

}

}
หวังว่าท่านคงจะจำ __construct() ได้ ซึ่งเราจะเขียนโค้ดการเชื่อมต่อฐานข้อมูลไว้ใน function นี้เพื่อเรียกให้มันทำงาน
ทันทีที่มีการสร้างอ็อบเจกต์ เราจะเชื่อมต่อฐานข้อมูลแบบนี้ และกำหนดค่าให้กับ protected $_mysql เพื่อการเรียก
ใช้ภายหลัง
public function __construct()
    {
       $this->_mysql = new mysqli(host, username, password, db)
                       or die('not connect to sql');
    }
เสร็จแล้วเราก็ไปเรียกใช้งาน __construct() ที่ไฟล์ index.php ดังนี้
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>oop php</title>
    </head>
    <body>
        <?php
        require_once('MySqlConn.php');
        $Db = new MySqlConn; 
        ?>        
        </div>
    </body>
</html>
แค่นี้การเชื่อมต่อฐานข้อมูลของเราก็เรียบร้อยแล้ว พร้อมที่จะให้เราใช้งานได้ทุกเมื่อ

แล้วผมก็ไปทำงานต่อที่ไฟล์ ไฟล์ MySqlConn.php ที่ function query()
public function query($sql)
    {   
        $query = $this->_mysql->query($sql);

        while ($row = $query->fetch_array()){       
           $results[] = $row;
        }
        return $results;
    }
รับค่า parameter มาหนึ่งค่าคือ $sql แล้วนำมา query จากนั้นก็วนลูปนำข้อมูลมาเข้า Array() แล้วก็ return ค่าออกไป
ไปต่อที่ไฟล์ index.php เพื่อส่งค่า parameter ไปให้กับ function query() แล้วก็รับค่าที่ return กลับมา
วนลูปออกมาแสดงด้วยฟังก์ชั่น foreach();

ไฟล์ index.php
require_once('MySqlConn.php');
$Db = new MySqlConn; 
$sql = $Db->query("select * from article");

forech($sql as $row){
    echo $row['title'].'<br/>';
}
เพียงแค่นี้เราก็สามารถดึงข้อมูลจากฐานข้อมูลมาแสดง แบบ oop php เต็มรูปแบบได้แล้ว

จากโค้ดนี้
$sql = $Db->query("select * from article");
ผมอยากให้มันส่งค่า parameter ไปแบบ สามารถเลือก field ได้ หรือส่งเฉพาะชื่อตารางฐานข้อมูล แล้วออโต้ query ออกมาเลย

ก็เปลี่ยนวิธีส่งเสียใหม่ให้มี 2 parameter  แบบนี้
$sql = $Db->query("select title from", "article");
ก็ได้ หรือ ปล่อยให้ parameter แรกเป็นค่าว่างก็ได้
$sql = $Db->query("", "article");

parameter แรกคือการเลือก field ของตารางฐานข้อมูล
parameter ที่สองคือการเลือกตารางฐานข้อมูล

แล้วเราก็ไปแก้ไข function query() ดังนี้

ไฟล์ MySqlConn.php
public function query($sql='', $tableName='')
    {   

        if(!empty($sql)){
            $sql = $sql;
        }
        else{
            $sql = 'SELECT * FROM';
        }

        $this->_tableName = $tableName;
        $query = $this->_mysql->query($sql $this->_tableName);

        while ($row = $query->fetch_array()){       
           $results[] = $row;
        }
        return $results;
    }
รับ parameter มาสองค่า ใช้ if, else กำหนด parameter แรกว่า
ถ้า $sql ไม่ใช่ค่าว่าง ก็ให้ $sql = $sql; ถ้าเป็นอย่างอื่น ก็ให้ $sql = 'SELECT * FROM';
จากนั้นสร้าง property ขึ้นมาหนึ่งค่าเพื่อรับ parameter ตัวที่สองโดยกำหนดให้เป็น protected
protected $_tableName;
กำหนดค่าให้เท่ากับ patameter ตัวที่สอง
$this->_tableName = $tableName; แล้วก็เพิ่มเข้าไป query ด้วยแบบนี้
$query = $this->_mysql->query($sql $this->_tableName);
เพียงแค่นี้เราก็สามารถส่งค่า parameter แบบใหนก็ได้ตามด้านล่างนี้ แต่เราก็ต้องใส่ค่า parameter 2ค่าทุกครั้ง
โดยจะปล่อยให้ค่าใด ค่าหนึ่งว่างก็ได้ ที่ไฟล์ index.php
แบบนี้
$sql = $Db->query("select title from", "article");
หรือ
$sql = $Db->query("select title from article where article_id = '1'", "");
หรือ
$sql = $Db->query("", "article");//ค่าพื้นฐานของ parameter แรกคือ select * from
แต่ผมก็ยังคิดอีกว่า ถ้าเราใช้ where แบบโค้ดด้านบนมันจะยาวไปมั๊ย อยากให้มันส่งค่า where ไปต่างหากแบบนี้
$Db->where('article_id', '1');
จากโค้ด ความหมายก็คือ where article_id = '1' นี้มีการส่งค่า parameter ไปสองค่า ให้กับฟังก์ชั่น where();
เราก็ต้องไปสร้างฟังก์ชั่นเพื่อรับค่าสองค่านี้

ไฟล์ MySqlConn.php
protected $_where;

public function where($prop, $value)
{
if(!empty($prop)){
$this->_where = "WHERE $prop = '$value'";
}
}
จากโค้ดด้านบนเราจะเพิ่ม property อีกหนึ่งตัว แล้วกำหนดให้มีค่าเท่ากับ "WHERE $prop = '$value'
แล้วก็นำไป query แบบนี้
$query = $this->_mysql->query($sql $this->_tableName  $this->_where);
นอกจากนี้ยังมีการกำหนด order by ... desc แล้วก็ limit ซึ่งก็ใช้วิธีการเดียวกัน ดังที่ท่านจะได้เห็นตัวอย่างจากไฟล์สำเร็จแล้วแบบนี้
$query = $this->_mysql->query("$sql $this->_tableName $this->_where
         $this->_order $this->_limit");

แค่นี้เราก็ได้ปรับปรุงโค้ดของเราให้สามารถใช้งานได้ ด้วยการเขียนโค้ดสั้นๆ เพื่อ query ข้อมูลจาก database ขึ้นมาแสดงแบบนี้ 

ไฟล์ index.php
require_once('MySqlConn.php');
$Db = new MySqlConn;
$Db->where('language', 'php'); 
$sql = $Db->query("", "article"); 
โดยที่ท่านจะเรียกใช้งานกี่ครั้งก็ได้ในเพจเดียวเพียงแค่สร้าง อ็อบเจกต์ขึ้นมาใหม่ แบบนี้
$Db = new MySqlConn;
$Db->where('language', 'php'); 
$Db->order('article_id', 'desc');
$Db->limit('10');
$sql = $Db->query("select title from", "article");
  
$Db2 = new MySqlConn;
$Db2->limit('10');
$sql = $Db2->query("", "article");

สำหรับบทความนี้ก็ขอจบลงเพียงเท่านี้ ผิดพลาดยังไง ก็ขออภัยด้วยนะครับ....

ไฟล์ index.php
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once('MySqlConn.php');
        $Db = new MySqlConn;
        $Db->order('id_article', 'desc');
        $Db->where('language', 'php');
        $Db->limit('10');
        $sql = $Db->query('', 'myarticles');
        
        foreach($sql as $row){
            echo $row['title'].'<br/>';
        } 
        
        ?>        
        </div>
    </body>
</html>
ไฟล์ database.php
define("host", "localhost");
define("username", "root");
define("password", "123");
define("db", "oop");
ไฟล์ MySqlConn.php
require_once('database.php');

class MySqlConn
{     
    protected $_mysql;
    protected $_tableName;   
    protected $_where;
    protected $_order;
    protected $_limit;
    
    public function __construct()
    {
       $this->_mysql = new mysqli(host, username, password, db)
                       or die('not connect to sql');
    }

    public function where($prop, $value)
    {
        if(!empty($prop) && !empty($value)){
            $this->_where = "WHERE $prop = '$value'";
        }
    }
    
    public function order($order, $sort)
    {
        if(!empty($order)){
            $this->_order = "order by $order $sort";
        }
        
    }
    
    public function limit($value)
    {
        if(!empty($value)){
        $this->_limit = "LIMIT $value";
        }
    }
    
    public function query($sql='', $tableName='')
    {   
        if(!empty($sql)){
            $sql = $sql;
        }
        else{
            $sql = 'SELECT * FROM';
        }
        $this->_tableName = $tableName;
        $query = $this->_mysql->query('SET NAMES UTF8');
        $query = $this->_mysql->query("$sql $this->_tableName $this->_where
                 $this->_order $this->_limit");

        while ($row = $query->fetch_array()){       
           $results[] = $row;
        }
        return $results;
    }
    
    
}
Read More

วันอังคารที่ 17 กันยายน พ.ศ. 2556

วิธีดึงข้อมูลจาก Database มาแสดงแบบ OOP PHP



บทความนี้เกี่ยวข้องกับการสร้างฟังชั่น เพื่อเชื่อมต่อฐานข้อมูล และดึงข้อมูลขึ้นมาแสดง ยังไม่เต็มรูปแบบของ OOP เนื่องจากยังไม่มีการสร้าง Object ภายนอก เพียงแต่มีรูปแบบการเชื่อมต่อฐานข้อมูลแบบ OOP และสามารถนำไปใช้ได้จริง เรียกว่า สร้างจินตนาการ อุ่นเครื่องกันก่อน.....

เริ่ม
ผมจะสร้างไฟล์ขึ้นมา 2 ไฟล์ คือ index.php กับ MySqlConnect.php
ที่ไฟล์ MySqlConnect.php ผมจะสร้าง function เพื่อเชื่อมต่อฐานข้อมูลก่อน ดังนี้

ไฟล์ MySqlConnect.php
function connect()
 {
    $conn = new mysqli('host', 'username', 'password', 'database')
                         or die('not connect to sql');
    return $conn;
 }
โค้ดที่ท่านเห็นด้านบน นี้คือการเชื่อมต่อฐานข้อมูลแบบ OOP ในฟังก์ชั่นนี้มีการสร้างอ็อบเจ็กต์ คือ
$conn = new mysqli(); เป็นรูปแบบการเชื่อมต่อกับฐานข้อมูล MySQL แบบใหม่ซึ่ง สามารถใช้งานได้ ใน MySQL 4.1 ขึ้นไป
ส่วนที่ไฟล์ index.php ผมก็จะนำเข้าไฟล์ MySqlConnect.php และสร้างตัวแปรขึ้นมาเพื่อเรียกใช้ function connect();

ไฟล์ index.php
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once('MySqlConnect.php');
        $conn = connect();        
        ?>
    </body>
</html>
มาถึงตอนนี้เราก็ทำการเชื่อมต่อฐานข้อมูลเรียบร้อยแล้ว เหลือแต่ select ตารางฐานข้อมูลและ query ออกมา
เท่านั้นเอง ไปต่อกันเลยครับ...
ที่ไฟล์ MySqlConnect.php ผมจะสร้างฟังก์ชั่นอีกคือ getSql();
function getSql($conn='', $sql='')
{
    $query = $conn->query($sql);
    $rows = array();

    while ($row = $query->fetch_array()) {        
        $rows[] = $row;
    }
    return $rows;
}
ฟังก์ชั่นนี้รับค่า parameter มาสองค่า คือ $conn, $sql ก็คือตัวแปรที่เราได้สร้างเอาไว้ที่ไฟล์ index.php
แล้วผมก็ query ออกมา เก็บข้อมูลในรูปแบบ Array แล้วก็ return ค่าออกไป

จากนั้นที่ไฟล์ index.php ก็ไปสร้างตัวแปรเพื่อส่งค่า parameter ไปให้กับ function getSql()
พร้อมทั้งวนลูป ค่าที่ได้รับการคืนค่ากลับออกมา

ไฟล์ index.php
$sql = 'select * from article';
$results = getSql($conn, $sql);
        foreach($results as $row){
        echo "<div style='width:400px;margin-left:200px;'>";    
        echo "<h3>".$row['title']."</h3>";
        echo $row['article'];
        echo "</div>";
เพียงเท่านี้เราก็จะได้ฟังก์ชั่นการเชื่อมต่อฐานข้อมูล พร้อมทั้ง query ข้อมูลออกมาแสดง แบบง่ายๆ

บทความนี้ก็ขอจบเพียงเท่านี้ครับ ผิดพลาดยังไงก็ขออภัยด้วยครับ.....

ไฟล์ index.php
<!DOCTYPE html>
<html lang="th">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        require_once('MySqlConnect.php');
        $conn = connect();
        $sql = 'select * from article';

        $results = getSql($conn, $sql);
        foreach($results as $row){
        echo "<div style='width:500px;margin-left:100px;'>";    
        echo "<h3>".$row['title']."</h3>";
        echo $row['article'];
        echo "</div>";
        }
        ?>
    </body>
</html>

ไฟล์ MySqlConnect.php
<?php
function connect()
{
    $conn = new mysqli('localhost', 'root', '', 'bookneo')
                       or die('not connect to sql');
    return $conn;
}

 
function getSql($conn, $sql)
{
    $query = $conn->query("SET NAMES UTF8");
    $query = $conn->query($sql);
 
    $rows = array();
 
    while ($row = $query->fetch_array()){        
        $rows[] = $row;
    }
    return $rows;
}
?>


Read More

วันพุธที่ 4 กันยายน พ.ศ. 2556

Inheritance การสืบทอดคุณสมบัติ ของClass OOP PHP



ได้ยินกันบ่อยๆ inheritance เป็นถ่ายทอดคุณสมบัติของแม่แบบ หรือ Class หลักที่กำหนดให้มีคุณสมบัติต่างๆ ที่จำเป็นต้องมี ด้วยการสืบทอดของ Class ลูก(Sub-Class)จึงทำให้ Classลูก สามารถมีคุณสมบัติเฉพาะที่เหมือนกับ Classหลัก และสามารถเพิ่มคุณสมบัติอื่นเข้าไปได้อีกในคลาสนี้....

สมมุติว่า มีพ่อแม่คู่หนึ่ง ชื่อ a กับ b และสมมุติให้ a,b เป็น Class ParentClass
- a กับ b มีลูกด้วยกัน 3คน ชื่อ c, d, f และสมมุติให้ c,d,f เป็น Class ChildClass
- a กับ b มีคุณสมบัติเฉพาะดังนี้  ชื่อ ความสูง น้ำหนัก เพศ มีพฤติกรรมดังนี้ วิ่งสองขา นอนหลับ การกิน
คุณสมบัติและพฤติกรรมเหล่านี้จะถูกถ่ายทอดไปสู่ลูกๆ ทั้ง 3 ด้วย

แล้วทำอย่างไรให้ ParentClass รู้ว่า ChildClass เป็น Class ลูก(Sub-Class) ของตัวเอง
ก็ต้องประกาศให้เป็นที่รู้กันด้วย keyword ที่ชื่อ extends
รูปแบบ
class ChildClass extends ParentClass
{
//doSometing....
}
เพียงแค่นี้ ClidClass ก็สามารถเรียกใช้คุณสมบัติจาก ParentClass ได้แล้วครับ

ok. เดี๋ยวมาทำให้มันเห็นภาพแบบ ง่ายๆ สั้นๆกันครับ
ผมจะเริ่มด้วยการสร้างไฟล์ขึ้นมา 3 ไฟล์ คือ index.php, Parentclass.php, Childclass.php
ผมจะเริ่มที่ไฟล์ Parentclass.php ก่อน

ไฟล์ Parentclass.php
class ParentClass
{
    public function __construct()
    {
        echo 'ฉันสามารถวิ่ง 2 ขาได้';
    }
}
ท่านคงจะจำ method __construct() ได้ ถ้าไม่ได้ก็ให้ไปอ่านบทความก่อนหน้านี้ครับ
จากนั้นผมก็จะเรียก method __construct() ด้วยการสร้างอ็อบเจ็ค ที่ไฟล์ index.php ดังนี้

ไฟล์ index.php
ไฟล์ index.php
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type"
        content="text/html; charset=UTF-8">
        <title></title>
    </head>
  <body>
<?php
require_once('Parentclass.php');
$ab = new ParentClass();
?>
  </body>
</html>

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้



จากนั้นผมก็สร้าง classลูกขึ้นมา ชื่อว่า ChildClass
แล้วผมก็นำเข้าไฟล์ Parentclass.php ด้วยการ require_once()
require_once('Parentclass.php');

ไฟล์ Childclass.php
class ChildClass extends ParentClass
{
   
}
ไฟล์ Childclass.php มีแค่นี้ไม่มีอะไรเลย แต่สามารถ output ได้เหมือนกับ PrentClass ได้ทุกประการ

การนำเข้าไฟล์ Parentclass.php ท่านจะนำเข้าตรงไฟล์ Childclass.php ก็ได้ หรือที่ไฟล์ index.php
ก็ได้ แต่ถ้าท่านนำเข้าที่ไฟล์ Childclass.php ก็ไม่ต้องไปนำเข้าที่ไฟล์ index.php อีก เดี๋ยวผมขอเอาไปนำ
เข้าที่ไฟล์ index.php ก็แล้วกัน จากนั้นผมก็ output ที่ไฟล์ index.php
ไฟล์ index.php
require_once('Parentclass.php');
require_once('Childclass.php');

$cdf = new ChildClass();

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้



ที่นี้เดี๋ยวผมจะเปลี่ยนวิธีเรียก function __contruct ของ ParentClass ใหม่ด้วยการใช้ คำว่า parent แล้วตามด้วยเครื่องหมาย ::
รูปแบบ
ไฟล์ Childclass.php
class ChildClass extends ParentClass
{
   function __construct()
    {
        parent::__construct();
    }
}

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้


ทุกอย่างยังสืบทอดได้เหมือนเดิม

แล้วถ้าผมมี mathod เพิ่มขึ้นมา 2 mathod  ที่ไฟล์ Parentclass.php ดังนี้
class ParentClass
{
    public function __construct()
    {
        echo 'ฉันสามารถวิ่ง 2 ขาได้';
    }

    public function doSometing()
    {
        return 'call me doSometing';
    }
}
จากนั้นผมก็ เรียก method doSometing() ที่ไฟล์ Childclass.php ดังนี้
ไฟล์ Childclass.php
class ChildClass extends ParentClass
{
    public function __construct() 
    {
        parent::__construct();
        echo $this->doSometing();
    }
}

OUTPUT: ฉันสามารถวิ่ง 2 ขาได้ call me doSometing



ในบทความนี้ท่านก็ได้เห็น วิธีการสืบทอดคุณสมบัติ จาก Class(แม่แบบ) ของ Classลูก(Sub-Class)
พร้อมทั้งวิธีการเรียกใช้งาน ผิดพลาดยังไงก็ขออภัยด้วยครับ สำหรับบทความนี้ผมก็ขอจบเพียงเท่านี้.....

Read More

Encapsulation การปกป้องข้อมูลของอ็อบเจกต์ OOP PHP



Encapsulation ก็คือการปกป้องข้อมูลของอ็อบเจกต์ ด้วยการใช้คีย์เวิร์ด อย่าง public, private, protected การใช้งาน public โดยปกติค่าพื้นฐานของ property กับ method จะเป็น public อยู่แล้วโดยไม่ต้องใส่ public จะใส่หรือไม่ใส่ก็ได้ ท่านจะเขียนแแบบนี้ var $name; หรือแบบนี้ public $name; ก็ได้....

Encapsulation ก็คือการปกป้องข้อมูลของอ็อบเจกต์ ด้วยการใช้คีย์เวิร์ด อย่าง public, private, protected
วิธีการก็คือ ใช้คีย์เวิร์ดเหล่านี้วางไว้ขางหน้า property และ method
property = variable(ตัวแปร)
method = function(ฟังก์ชั่น)

Public = สามารถใช้งานได้ทั่วไป
Private = สามารถเข้าใช้ได้เฉพาะภายในคลาส
Protected = สามารถเข้าใช้ได้ภายในคลาส และคลาสที่สืบทอด(extends)จากคลาสแม่

การใช้งาน public โดยปกติค่าพื้นฐานของ property กับ method จะเป็น public อยู่แล้วโดยไม่ต้องใส่
public จะใส่หรือไม่ใส่ก็ได้
ท่านจะเขียนแแบบนี้ var $name; หรือแบบนี้ public $name; ก็ได้

property หรือ method ที่ถูกกำหนดให้เป็น public สามารถเรียกใช้จากภายนอก Class
ได้ทันทีที่กำหนดอ็อบเจกต์ เช่น
class Human{
var $name = 'Bookneo';
}
หรือ
class Human{
public $name = 'Bookneo';
}
ผมสามารถเรียกใช้ ด้วยการสร้างอ็อบแบบนี้
$Myname = new Human();
echo $Myname->name;
ส่วน private ไม่สามารถเรียกใช้จากภายนอกได้ แต่สามารถเรียกใช้ภายใน Class ได้ เช่น
class Human{
private $name = 'Bookneo';

function getName(){
return $this->name;
}
}
return คือการคืนค่ากลับออกไปผ่าน method
$this คือการเชื่อมโยงระหว่าง property กับ method โดยการใช้เครื่องหมาย -> ชี้ตำแหน่ง

เรียกใช้
$Myname = new Human();
echo $Myname->getName();
ทีนี้ผมจะสร้างไฟล์ขึ้นมา 2 ไฟล์ คือ index.php กับ Myclass.php
ไฟล์ Myclass.php ผมจะสร้าง method ขึ้นมา 2 method คือ setName กับ getName
method setName จะรับค่ามา 1 ค่า เริ่มต้นด้วยการเซ็ตค่าว่างให้เป็นค่าพื้นฐาน
method getName จะคืนค่ากลับออกไป
รูปแบบ
class Human
{    
function setName($name = ''){
    $this->name = $name;
}

function getName(){
    return $this->name;
}    
}
ไฟล์ index.php  ผมจะส่งค่าไปให้กับ method setName แบบนี้
$Myname->setName('Bookneo');

ไฟล์ index.php 
<!DOCTYPE html>
<html>
<head>
<mata>charset=utf-8</mata>
<title></title>
</head>
<body>

<?php
require_once('Myclass.php');
$Myname = new Human();
$Myname->setName('Bookneo');
echo $Myname->getName();
?>

</body>
</html>

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

Read More

วันศุกร์ที่ 19 กรกฎาคม พ.ศ. 2556

Construct ฟังก์ชั่นพิเศษ OOP PHP



ใน PHP5 Construct เป็นฟังก์ชั่นพิเศษ ที่จะถูกเรียกใช้งานทันทีเมื่อเราสร้างอ๊อบเจ็คจากคลาส

รูปแบบการเขียน
class Human
{
    function __construct()
    {
        echo "My name is Bookneo";
    }
}
เรียกใช้งาน
$name = new Human();
อีกวิธีหนึ่งก็คือ การสร้าง function ที่มีชื่อเดียวกันกับ class ตัวอย่าง
class Human
{
    function human()
    {
        echo "My name is Bookneo";
    }
}
เรียกใช้งาน
$name = new Human();
ทีนี้ผมจะสร้าง file ขึ้นมา 2 ไฟล์ คือ
Myclass.php เพื่อเก็บ function ต่างๆ
myview.php สำหรับเรียกใช้งาน function หรือเป็น html page สำหรับแสดงข้อมูลออกทางจอภาพ

ไฟล์ Myclass.php ผมจะเขียนโค้ดแบบนี้
<?php
class Human
{
    function __construct()
    {
        echo "<font color='blue'><h2>My name is Bookneo</h2></font>";
    }
}

?>

ไฟล์ myview.php 
<html>
    <head>
        <title></title>
    </head>
    
    <body>
        <?php
        
        require_once('Myclass.php');//นำเข้าไฟล์ Myclass.php
        
        $name = new Human();
        
        ?>
    </body>
    
</html>




Read More

วันอังคารที่ 7 พฤษภาคม พ.ศ. 2556

"สวัสดีชาวโลก" กับ OOP PHP



หลังจากที่หายไปนาน ในที่สุดผมก็ปรับปรุงเว็บใหม่เสร็จ แต่อาจจะยังไม่เรียบร้อยเท่าไหร่ ไม่เป็นไรปรับปรุงกันไป เรื่อยๆก็แล้วกัน ขอออกตัวก่อนว่าผมไม่ได้เก่ง ผมยังเรียนอยู่เลย ผมเพียงแต่บันทึก ร่องรอยการเรียนรู้ของผม ที่อาจเป็นประโยชน์สำหรับท่าน ผู้เดินทางด้วยกันเท่านั้น บทความที่ผมเขียนจะไม่มีหลักในทางวิชาการใดๆทั้งสิ้น ผมเน้นในเรื่องของการปฏิบัติ อย่างเดียว เขียนแบบนี้แล้ว จะเกิดผลอย่างนี้ จากนั้นก็นำไปใช้งานจริง เอ้า! มาว่าเรื่อง OOP PHP กันต่อ...

คำหลักๆ ที่เราจะได้รู้จักก็มี  class, function, this และ parent

 เราจะเริ่มด้วยการสร้าง  class ขึ้นมาก่อน
 จากนั้นก็สร้าง function เรียกแบบ oop ว่า Method แต่ผมขอเรียกว่าฟังก์ชั่นก็แล้วกัน
 ผมจะตั้งชื่อ class นี้ว่า Human รูปแบบของ class Human จะเป็นแบบนี้
<?php
 class Human {
     
 }
 ?>
จากนั้น ผมก็จะสร้าง function talk() ไว้ภายใน class แบบนี้
<?php
 class Human {
     function talk(){
         echo "Hello World";
     }
 }
?>
ตอนนี้เราไม่สามารถจะเรียกใช้งาน function talk() ได้ จนกว่าเราจะประกาศเสียก่อนว่า ใครคือ Human
ผมขออธิบายแบบง่ายๆ ไม่ว่า ใครหรือสิ่งใดก็ตามเมื่อถูกประกาศว่าเป็น Human
ก็สามาถใช้งาน function talk() ได้ทั้งนั้น
วิธีการประกาศ ผมจะประกาศว่า นาย $bookneo เป็น Human รูปแบบ
$bookneo = new Human();

นาย $bookneo ก็สามารถเรียกใช้งาน function talk() ได้ดังนี้
$bookneo->talk();

รูปแบบเต็ม
<?php
 class Human {
     function talk(){
         echo "Hello World";
     }
 }

$bookneo = new Human();
$bookneo->talk();

?>


ใน class Human เราจะเพิ่ม function กี่ฟังก์ชั่น ก็ได้ เวลาเรียกใช้ เราก็ประกาศ Human แค่ครั้งเดียว
ตัวอย่าง
<?php

class Human {

    function talk() {
        echo "Hello World";
    }

    function name() {
        echo " <font color='blue'>My name is bookneo</font>";
    }

}

$bookneo = new Human();
$bookneo->talk();
$bookneo->name();

?>



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



Read More

วันอังคารที่ 30 เมษายน พ.ศ. 2556

OOP การเขียนโปรแกรมเชิงวัตถุ PHP (เกริ่นนำ)



การเขียนโปรแกรมเชิงวัตถุ (อังกฤษ: Object-oriented programming, OOP) คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้ วัตถุ อื่นๆที่เกี่ยวข้องเพื่อให้ทำงานต่อไป....

Object Oriented Programming หรือ OOP หรือ การเขียนโปรแกรมเชิงวัตถุ หมายถึง การเขียนโปรแกรมโดยการมองว่าโปรแกรมใดๆเป็นวัตถุชนิดหนึ่ง ที่ประกอบไปด้วย คุณสมบัติ(property) และ วิธีการ(method)

เช่น คลาสรถ ประกอบด้วย คุณสมบัติ สี จำนวนล้อ และ วิธีการ เช่น วิธีขับ วิธีจอด เป็นต้น นอกจากนี้ OOP ที่ดี ยังต้องมีคุณสมบัติการสืบทอด(inherited) เช่น คลาสรถยนต์ สืบทอดมาจากคลาสรถ และ คลาสรถมอเตอร์ไซต์ ก็สืบทอดมาจากคลาสรถเช่นเดียวกัน แต่ทั้ง 2 คลาส(ซึ่งเรียกว่าคลาสลูก หรือ sub class) ก็อาจมีคุณสมบัติบางอย่างที่แตกต่างจาก คลาสรถ(คลาสแม่ หรือ base class) เช่น คลาสรถยนต์ มี 4 ล้อ และ คลาสรถมอเตอร์ไซต์ มี 2 ล้อ เป็นต้นโปรแกรมเชิงวัตถุOOP ช่วยให้เขียนโปรแกรมได้อย่างสง่างาม ตรวจสอบได้ง่าย สามารถนำโค้ดที่เขียนไว้ กลับมาใช้ใหม่ได้

http://iamjomjung.blogspot.com




โดยทั่วไปแล้วสำหรับโปรแกรมเมอร์ทั่วไปที่รู้จักภาษา PHP มักจะไม่เขียนโปรแกรมของตน เป็นรูปแบบ OOP แต่หากรู้ว่าการเขียนโปรแกรมแบบ OOP สามารถช่วยทำให้สามารถ เพิ่มประสิทธิภาพของโปรแกรมของตนอย่างไรล่ะก็ เราทุกคนคงคิดที่จะเปลี่ยนมาเขียนเป็น OOP แน่นอน

ในพื้นฐานของการเขียนและออกแบบโปรแกรม โปรแกรมเมอร์ทุกคนรู้ดีว่า วิธีการที่จะเขียนโปรแกรม ให้สามารถแก้ไข และ ทำงานอย่างเป็นระบบ และรวดเร็ว คือการเขียนโปรแกรมแบบ Object-Oriented Programing (OOP) หรือ การเขียนโปรแกรมเชิงวัตถุ ซึ่งมีประโยชน์ต่างๆ เช่น การเขียนโปรแกรมครั้งเดียวแต่ใช้ซ้ำหลาย ๆ รอบ, การทดสอบระบบ, การแก้ไขโค้ดโปรแกรมที่ตรงจุด ซึ่งหากว่าเรา เคยเขียนโปรแกรมที่เป็นภาษา OOP อื่นๆ เช่น C++, Object Pascal (Borland Delphi), Visual Basic .Net ก็สามารถนำมาใช้กับการเขียนโปรแกรม OOP ใน PHP ได้เหมือนๆ กัน

หากลองคิดดูว่า เราเป็นโปรแกรมเมอร์ ที่ต้องนั่งเขียนโปรแกรมกว่าสิบๆ โปรแกรม โดยมีพื้นฐานคล้ายๆ เช่น การติดต่อฐานข้อมูล, การจัดเก็บระบบสมาชิค, การติดต่อปฏิสัมพันธ์ระหว่างผู้ใช้ (Webboard, Forum) แบบเดียวกัน แต่มีระบบย่อยๆ ต่างกัน นั่นอาจทำให้เราเขียนโค้ดแล้วเกิดอาการสับสนขึ้นได้ เช่น หน้าแรกเรียกฐานข้อมูลดึงหาข้อมูลสมาชิค เขียนโค้ด 10 บรรทัด, หน้าสมาชิค เขียนโค้ดดึงข้อมูลสมาชิคอีก 10 บรรทัด และเป็นอยากนี้อีกหลายๆ หน้า นั้นคือ "การเขียนโค้ดซ้ำโดยไม่จำเป็น" หากเรานำ OOP มาประยุกต์ใช้ จะทำให้เราสามารถลดการเขียนโปรแกรม จาก 10 บรรทักในแต่ล่ะหน้า เหลือเพียงบรรทัดเดียว และเก็บโค้ดที่เหมือนๆ กันในไฟล์ๆ หนึ่ง ที่จะนำมาเรียกใช้ภายหลัง และเมื่อเก็บความผิดพลาด เราก็แก้แค่เพียงจุดเดียว แล้วทุกๆ หน้าก็จะแก้ไปเหมือนๆ กัน

มาจนถึงจุดนี้เราคงรู้แล้วว่า การเขียน OOP จะช่วยเรา ในการเขียนโปรแกรมได้อย่างไรแล้วนะครับ


phpsec แห่ง http://phpsec.exteen.com




- การเขียนโปรแกรมเชิงวัตถุ นั้นมีความปลอดภัยสูง ปลอดภัยจากอะไร ก็ปลอดภัยจากผลกระทบของการแก้ไข เพิ่มเติม เปลี่ยนแปลงโค้ด โปรแกรมของเราในภายหลังได้
- ช่วยให้เราสามารถทำงานเป็นทีมได้ง่ายขึ้น
- ช่วยให้เราไปเรียนรู้ต่อยอด เกี่ยวกับ php framework เช่น Zend, Cakephp, Codeigniter อื่นๆ ได้ง่ายขึ้น
- ช่วยให้เราไม่ต้องเขียนโค้ดซ้ำๆ เดิมๆ ทุกครั้ง ให้เพื่อนเอาไปใช้ก็ได้ หรือเอาของเพื่อนมาใช้ก็ได้ อันนี้ดีมาก อิอิ..

แค่นี้ก่อน ไว้บทความหน้า ไปภาคปฏิบัติกันครับ...




Read More

วันพุธที่ 3 เมษายน พ.ศ. 2556

Update chat แบบ simple ๆ ภาค2 + emoticon PHP, jQuery



ที่จริงวิธีสร้าง chat มีสองวิธี คือเก็บเป็นไฟล์ text กับเก็บลงฐานข้อมูล วิธีที่ผมเขียนบทความนี้เป็นวิธี เก็บลงฐานข้อมูล ส่วนวิธีเก็บเป็นไฟล์ text เอาไว้คราวหน้าครับ (ไม่แน่นอน^^)....

เริ่มเลยดีกว่าครับ
สิ่งที่ต้องมี

ผมจะเริ่มทำงานกับไฟล์ mychat.php ก่อนด้วยการใส่ตัว emoticon ลงไปพร้อมกับคลิกเพิ่มตัว
emoticon ลงในช่อง message ของเราดังนี้
ไฟล์ mychat.php
จากไฟล์เดิม

<div id="formsend">
<input type="text" id="msg" name="msg"/>
<button id="send" onclick="Send();">Send</button>
</div>

ท่านสังเกตุดูนะครับจากที่ผมเรียนมาเราจะใส่ input ใน form ใช่มั๊ยครับ แต่ไฟล์นี้ผมไม่ใส่
เพราะว่าพอผมใส่แล้ว chat มันจะกระพริบ แต่พอผมตัด form ออกมันไม่กระพริบ งงมั๊ยครับ
ถ้าท่านไม่ งง เอาเป็นว่าผม งง เองก็แล้วกัน อิอิ.. แสดงว่าเราไม่ควรยึดติดกับเรื่องนี้แแบบตายตัวมากนัก
เพราะมันเป็นเรื่องที่ยืดหยุ่นกันได้ ชักจะยาวแล้ว อิอิ.. ต่อเลยครับ
หลังจากนั้นผมเพิ่มตัว emoticon เข้าไปแบบนี้

<div id="emoticon">
<?php
$emoticon = 19 ;
for ($i = 0; $i <= $emoticon; $i++) {
?>
<img id="emotion" src="smiley/<?php echo $i ?>.gif" 
onclick ="msg.value+='[:<?php echo $i ?>:]';msg.focus();"/>

<?php
}
?>
</div>

ชื่อตัว emoticon ของท่านจะต้องเป็นตัวเลขนะครับเพราะว่า เราจะวนลูปด้วย for เพื่อเอาตัวเลข
มาเป็นชื่อครับ ก็จะใด้แบบนี้ [:0:],[:1:] เรียงกันไปเรื่อยๆ แล้วแต่ว่าเราจะมีตัว emoticon กี่ตัวครับ

แล้วเพิ่ม CSS ให้กับไอดี emotion เวลาที่เราเอาเมาส์ไปชี้ให้เป็นรูปมือแบบนี้

<style type="text/css">
    #emotion{
        cursor:pointer;
}
</style>
update เสร็จแล้วสำหรับไฟล์ mychat.php

หลังจากนั้นผมก็ไปอัพเดทเพิ่มเติมที่ไฟล์ chat_out.php
เพราะว่าเราจะต้องไป replace ตัว emoticon ให้ เครื่องหมาย [::] นี้กลายเป็นแท็ก img ครับ
แล้วก็เพิ่มเติมฟังก์ชั่น autolink() หมายถึงว่าเวลามีคนโพสลิงค์เข้ามาก็ให้สามารถใช้เมาส์กดเป็นลิงค์ส่ง
ไปเปิดอีกหน้าต่างหนึ่งครับ

ไฟล์ chat_out.php
ผมจะสร้างฟังก์ชั่น autolind ก่อนดังนี้

<?php
function autolink($msg) {
$msg = preg_replace
("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i",
"\\1<a href=\"mailto:\\2@\\3\"><font color=blue>\\2@\\3</font></a>"
, $msg);
$msg = preg_replace
("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is",
"\\1<a href=\"\\2\" target=\"_blank\"><font color=blue>\\2</font></a>"
, $msg);
$msg = preg_replace
("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is",
"\\1<a href=\"http://\\2\" target=\"_blank\"><font color=blue>\\2</font></a>"
, $msg);
return ( $msg );
}
?>

จากนั้นก็ตามด้วยการ replace ตัว emoticon แบบ Array ดังนี้
<?php
$pic = array("[:0:]", "[:1:]", "[:2:]", "[:3:]", "[:4:]", "[:5:]",
    "[:6:]", "[:7:]", "[:8:]", "[:9:]", "[:10:]","[:11:]", "[:12:]",
    "[:13:]", "[:14:]", "[:15:]", "[:16:]", "[:17:]", "[:18:]", "[:19:]"
);
$replace = array("<IMG SRC='smiley/0.gif'>", "<IMG SRC='smiley/1.gif'>"
, "<IMG SRC='smiley/2.gif'>", "<IMG SRC='smiley/3.gif'>"
, "<IMG SRC='smiley/4.gif'>", "<IMG SRC='smiley/5.gif'>"
, "<IMG SRC='smiley/6.gif'>", "<IMG SRC='smiley/7.gif'>"
, "<IMG SRC='smiley/8.gif'>", "<IMG SRC='smiley/9.gif'>"
, "<IMG SRC='smiley/10.gif'>", "<IMG SRC='smiley/11.gif'>"
, "<IMG SRC='smiley/12.gif'>", "<IMG SRC='smiley/13.gif'>"
, "<IMG SRC='smiley/14.gif'>", "<IMG SRC='smiley/15.gif'>"
, "<IMG SRC='smiley/16.gif'>", "<IMG SRC='smiley/17.gif'>"
, "<IMG SRC='smiley/18.gif'>", "<IMG SRC='smiley/19.gif'>"
);
?>


ถ้าท่านมีตัว emoticon มากกว่านี้ก็ใส่เพิ่มเข้าไปเลยครับ

แล้วผมก็กำหนดตัวแปร $msg เสียใหม่ดังนี้

<?php
$msg = $row[msg];
$msg = strip_tags($row[msg],"<img>,<a>,<b>");//กำหนดให้ตัดแท็ก html ทั้งหมดยกเว้น
//<img>,<a>,<b> เพื่อตัดปัญหาจากการโพสแท็ก html
$msglink = autolink($msg);
$msgout[] = str_replace($pic, $replace, $msglink);
?>

จากนั้นก็เปลี่ยนการวนลูปเพื่อการแสดงข้อมูลใหม่ดังนี้
<?php
for ($i = count($msgout) - 1; $i >= 0; $i--) {
echo "<div style='padding:5px;overflow:hidden;word-wrap:break-word;'>";
echo "<font style='color:#999999;font-size:9px;'>".$datechat[$i]."</font>";
echo "&nbsp;";
echo "<font color='#0000ff'>:: </font>";
echo "<font color='#29498B' size='2'><b>".$user[$i]."</b></font>";
echo "&nbsp;";
echo "<font color='#ff0000'>>></font>";
echo "&nbsp;";
echo $msgout[$i];
echo "</div>";
}
?>

ข้อสังเกตุ
จากฟังก์ชั่นการอนุญาติแท็ก html นี้ $msg = strip_tags($row[msg],"<img>,<a>,<b>");
ท่านอาจเปลี่ยนไปใช้ BBCODE ก็ได้ครับซึ่งส่วนใหญ่เป็นอย่างนั้น แต่บทความนี้ ผมเน้นแบบง่ายๆ
ที่เหลือท่านก็ไปพัฒนาต่อเติมเสริมแต่งกันไปครับ

ไฟล์ที่ให้ download มีแต่ตัว emoticon ส่วนที่เหลือท่านก็นำไฟล์จากบทความก่อนมาปรับปรุงเอานะครับ
ในที่สุดการอัพเดท Chat ของเราก็จบลงเท่านี้เชิญทดไปทดสอบครับ...



Read More

การสร้าง chat แบบ simple ๆ ภาค1 PHP, jQuery



การสร้าง chat พูดคุยออนไลน์ผ่านอินเทอร์เน็ต นอกจากจะใช้สอบถาม ค้นหาข้อมูลแล้ว ก็ยังใช้สนทนาแลกเปลี่ยนความคิดเห็นกันแบบสดๆ หรือ เป็นกิจกรรมยอดฮิตกิจกรรมหนึ่งเลยทีเดียว สำหรับบางคนที่อาจหาเพื่อน หรือใครสักคน ไว้พูดคุยแก้เหงา.... ^^

สิ่งที่ต้องมี

เอาละครับมาสร้างฐานข้อมูลกันก่อนดังนี้
CREATE TABLE `mychat` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(255) NOT NULL DEFAULT '',
  `msg` text NOT NULL,
  `datetime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date` char(5) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
);

สร้างไฟล์ mychat.php
จากนั้นผมก็จะเริ่มด้วยการสร้างฟอร์มสำหรับส่งข้อความไปเก็บยังฐานข้อมูลก่อนดังนี้

<table>
    <tbody><tr>
        <td>ตรงนี้เอาไว้เรียกไฟล์ chat_out.php</td>
    </tr>
    <tr>
        <td>
            <div id="formsend">
                <input id="msg" name="msg" type="text">
                <button id="send" onclick="Send();">Send</button>
            </div>
        </td>
    </tr>
</tbody></table>

กำหนด css
<style type="text/css">
#msg{
width:450px;
}
</style>

จากนั้นก็สร้าง function javascript ลงไปเพื่อส่งข้อมูลไปยังไฟล์ chat_in.php เพื่อบันทึกลงฐานข้อมูล
ไฟล์ mychat.php

<script type="text/javascript">
function Send(){
var msg = $('#msg').val();
//alert(msg);
var str = Math.random();
var dataString = 'str='+str + '&msg='+msg;
$.ajax({
type: 'POST',
url: 'chat_in.php',
data: dataString,
success:function(data){
document.getElementById('msg').value="";//ล้างค่าใน id msg
}
});
}
</script>

สร้างไฟล์ chat_in.php
<?php
include'../config/config.php';
$msg = $_POST['msg'];
$user = $_COOKIE['']; //เก็บชื่อ user จาก cookie นะครับ
$datetime = date("Y-m-d H:i:s");
$date = date("d");
if($msg != "" && $user != ""){
$sql = "insert into mychat (user,msg,datetime,date) values ('$user','$msg','$datetime','$date')";
mysql_query($sql, $link);


mysql_close();
}
?>

เสร็จแล้วง่ายๆสำหรับไฟล์ chat_in.php

หลังจากนั้นผมก็สร้างไฟล์ chat_out.php ขึ้นมาเพื่อเรียกข้อมูลจากฐานข้อมูลมาแสดง
ไฟล์ chat_out.php

<div id="chatout">
<?php
include '../config/config.php';
$sql = "select * from mychat order by id DESC limit 0,20";//เรียกข้อมูล
$result = mysql_query($sql,$link);
$num = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
$user[] = $row[user];
$msg[] = $row[msg];
$datetime = $row[datetime];

list($date,$time) = split(' ',$datetime);
list($Y,$m,$d) = split('-',$date);
list($H,$i,$s) = split(':',$time);

switch($m)
{
case "01":$m = "ม.ค."; break;case "02":$m = "ก.พ."; break;
case "03":$m = "มี.ค."; break;case "04":$m = "เม.ย."; break;case "05":
$m = "พ.ค."; break;case "06":$m = "มิ.ย."; break;case "07":$m = "ก.ค."; break;
case "08":$m = "ส.ค."; break;case "09":$m = "ก.ย."; break;case "10":
$m = "ต.ค."; break;case "11":$m = "พ.ย."; break;case "12":$m = "ธ.ค."; break;
}

$Y = $Y+543;
$Y = substr($Y,2);
$date = "$d $m $Y";
$time = "$H:$i";
$datechat[] = $date.' '.$time;
}
?>
</div>

ข้อสังเกตุ
ผมจะรับค่าที่ดึงออกมาจากฐานข้อมูลแบบ array ด้วยการเติม [] ไว้หลังตัวแปร เช่น $user[]
ยกเว้น $datetime เพราะว่าผมต้องการแปลง เดือนและปี มาเป็นแบบไทยก่อน ด้วยการใช้คำสั่ง split()
แยก วัน เดือน ปี ออกเป็นส่วนๆ แล้วนำตัวแปรเดือนมาทำเป็นไทย ด้วย switch() case แล้วก็ทำปีเป็นไทย
ด้วยการนำ 543 มาบวกเข้าไป จากนั้นก็ใช้ฟังก์ชั่น substr() เพื่อทำให้ปีแสดงแค่สองต้วหลังคือ 54
แล้วผมก็นำมาทำเป็น array แบบนี้ $datechat[] = $date.' '.$time;

เมื่อเสร็จแล้วก็สั่ง echo ออกมาด้วยการวนลูปด้วย for

<?php
for($i = count($msg)-1;$i >= 0; $i--){
echo "<div style="padding:5px;overflow:hidden;">";
echo "<font style="color:#999999;font-size:9px;">".$datechat[$i]."</font>";
echo " ";
echo "<font color="#0000ff">:: </font>";
echo "<font color="#29498B" size="2"><b>".$user[$i]."</b></font>";
echo " ";
echo "<font color="#ff0000">>></font>";
echo " ";
echo $msg[$i];
echo "</div>";
}
?>

ท้ายสุดของไฟล์นี้ ผมก็เขียนโค้ดสั่งให้ลบข้อมูล chat ของเมื่อวานทิ้งไปเสีย ด้วยโค้ดนี้
<?php
$today = date("d");
$sql = "delete from mychat where date != '$today'";
mysql_query($sql, $link);
mysql_close();
?>


แล้วก็กำหนด css ให้กับ div
ไฟล์ chat_out.php

<style>
#chatout{
width:500px;
height:450px;
word-wrap:break-word;
overflow-y:auto;
border:1px solid #000000;
padding:10px;
}
</style>

ข้อสังเกตุ
word-wrap:break-word; เป็นการกำหนดให้ตัวหนังสืออยู่ในกรอบของ div
overflow-y:auto; เป็นการกำหนดให้มี scrollbar ในแนวตั้ง

เมื่อมี scrollbar แล้ว ก็ต้องมากำหนดให้ scrollbar อยู่ติดด้านล่างของ div ตลอดด้วย javascript
ดังนี้

<script type="text/javascript">
$(document).ready(function(){
var scroll = document.getElementById('chatout');
scroll.scrollTop = scroll.scrollHeight;
});
</script>

เสร็จแล้วสำหรับ ไฟล์ chat_out.php

แล้วผมก็ย้อนกลับไปทำงานกับไฟล์ mychat.php ต่อ ด้วยการใช้คำสั่ง javascript
เรียกไฟล์ chat_out.php ขึ้นมาแสดงตอนเรียกเพจครั้งแรกก่อนดังนี้

<script type="text/javascript">
$(document).ready(function() {
$("#mychat").load('chat_out.php');
});
</script>


หลังจากนั้นก็ตั้งเวลาให้กับการเรียกไฟล์ chat_out.php ขึ้นมาแสดงเพื่ออัพเดทข้อมูลแบบ auto ด้วย
การใช้ฟังก์ชั่น setInterval() ของ javascript ดังนี้
( หน่วยของเวลาคือ มิลลิวินาที โดย 1 วินาที = 1000 มิลลิวินาที )

<script type="text/javascript">
$(document).ready(function() {
var refreshId = setInterval(function() {
$("#mychat").load('chat_out.php').fadeIn("slow");
}, 5000);
});
</script>

ยังเหลืออีกนิดหนึ่งสำหรับไฟล์นี้ นั่นก็คือตอนที่เราพิมพ์ข้อความเสร็จแล้ว ไม่อยากลากเมาส์ไปกด send ให้
เสียอารมณ์ แต่เคาะ enter ไปเลยด้วยความมันส์ในอารมณ์ ก็ต้องเพิ่มโค้ด javascript เข้าไปแบบนี้

<script type="text/javascript">
 $('#msg').bind('keypress', function(e) {
        if(e.keyCode==13){
                Send();
        }
});
</script>

เสร็จแล้วสำหรับ chat แบบ simple ของเรา ขอเรียนเชิญไปทดสอบได้เลยครับ....


Read More

วันเสาร์ที่ 30 มีนาคม พ.ศ. 2556

Comments Box แสดงความคิดเห็นแบบไม่ต้องรีเฟรชเพจ jQuery, PHP, HTML



เมื่อหลายวันก่อนมีสมาชิก ท่านหนึ่ง.. ถามผมว่ามีคอมเม้นแบบไม่ต้อง Refresh หรือเปล่า ผมตอบว่าไม่มีแต่ก็ได้ สัญญาไว้ว่าจะมาเขียนให้ได้อ่านกัน วันนี้ก็เลยเขียนบทความคั่นรายการ Listbox ด้วย Comments box สักบทความก็แล้วกัน...

บทความนี้มีไฟล์ 3 ไฟล์ ดังนี้
jquery.js
newcomment.php
commentajax.php

ผมจะเริ่มด้วยการเขียน form ก่อน
ไฟล์ newcomment.php
<div class="main">
<div class="formcomment">
  
<form action="#" method="post">
<input name="title" id="name" type="text">
Name<span class="star">*</span>
<input name="email" id="email" type="text">
Email<span class="star">*</span><br>
<br>
<textarea name="comment" id="comment"></textarea><br>
<input class="submit" value="Submit" type="submit">
</form>
  
</div>
</div>
จากนั้นผมก็สร้าง div สำหรับโชว์คอมเม้น อยู่ภายในคลาสเมน
<div id="showcomment"></div>
ตรงนี้ท่านก็เขียนโค้ดเพื่อดึงข้อมูลคอมเม้นที่บันทึกแล้วขึ้นมาแสดงก่อนอยู่ภายในไอดีโชว์คอมเม้น
ตรงนี้ผมแค่แสดงตัวอย่างให้ท่านดูเท่านั้น
<table><tbody><tr><td valign="top">
<img src="http://www.bookneo.com/images_user/admin.png" style="float:left;
 width:60px; margin-right:20px">
</td><td>
<div style="border:2px dashed #dddddd;padding:5px;width:300px;">
<span style="font-size:16px; color:#663399; font-weight:bold"></span>
<span>
<?php echo "<font color='#1BAFD5'--><b>admin</b>";//$name ?>
</span> <br><br>
<?php echo " ตรงนี้ท่านก็เขียนโค้ดเพื่อดึงข้อมูลคอมเม้นที่บันทึกแล้วขึ้นมาแสดงก่อน";//$comment ?>
</div>
</td></tr></tbody></table>
แล้วผมก็สร้าง แท็ก ol ขึ้นมาเพื่ออัพเดทคอมเม้นที่มาใหม่พร้อมกับ แท็ก li จากไฟล์ commentajax.php
<ol id="update" class="showcomment"></ol>
แล้วผมก็ใส่ CSS ให้กับไฟล์ newcomment.php
.main{
    margin-left:250px;
    }
  
    .submit{
    margin-left:330px;
    background: #2B417D;
    font-weight: bold;
    color:white;
    border-radius:5px;
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    padding: 3px 3px 3px 3px;
    }
    textarea
    {
    color:#000000;
    font-size:14px;
    border:#1BAFD5 solid 2px;
    height:124px;
    margin-bottom:10px;
    width:400px;
    height:80px;
    }
    .star
    {
    color:#FF0000;
    font-size:16px;
    font-weight:bold;
    padding-left:5px;
    }
    #email{
  
    }
    .cleaner_h5{
    height:5px;
    }
    #update{
    border:0px solid #dddddd;
    width:398px;
    padding:10px;
    word-wrap:break-word;
    overflow: hidden;
    }
    ol.showcomment{
     list-style:none;
     font-size:1.2em;
     margin-left: -10px;
    }
    ol.showcomment li{
    display:none;
    position:relative;
    padding:.7em 0 .6em 0;
    }
    ol.oldcomment{
    list-style:none;
    font-size:1.2em;
    margin-left: 0px;
    }
    ol.oldcomment li{
    position:relative;
    padding:.7em 0 .6em 0;
    }
จากนั้นก็มาถึงคิวของ jQuery ที่เราจะส่งข้อมูลแบบไม่ต้อง refresh กัน
$(function() {
  
$(".submit").click(function() {
  
var name = $("#name").val();
var email = $("#email").val();
var comment = $("#comment").val();
var dataString = 'name='+ name + '&email=' + email + '&comment=' + comment;
//alert(dataString);
if(name=='' || email=='' || comment=='')
{
alert('กรุณากรอกข้อมูลให้ครบด้วยนะกรึ๊บ!');
}
else
{
  
$.ajax({
type: "POST",
url: "commentajax.php",
data: dataString,
cache: false,
success: function(data){
$("ol#update").append(data);
$("ol#update li:last").fadeIn("slow"); //นำข้อมูลมาแสดงด้วยการต่อท้าย li ตัวล่าสุด
document.getElementById('email').value='';//สั่งให้ form ทั้งหมดว่างเปล่า
document.getElementById('name').value='';
document.getElementById('comment').value='';
}
});
}
return false;
});
});
ไปที่ไฟล์ commentajax.php
รับข้อมูลเพื่อเก็บลงฐานข้อมูล
if($_POST)
{
$name=$_POST['name'];
$email=$_POST['email'];
$comment=$_POST['comment'];
  
//เขียนโค้ดบันทึกลงฐานข้อมูลตรงนี้ครับ
  
}
  
else { }
จากนั้นก็นำข้อมูลที่รับมานำมาแสดงเพื่อ return ค่าส่งกลับไปให้กับ javascript นำไปแสดง
<li class="box" valign="top">
<table><tbody><tr><td valign="top">
<img src="http://www.bookneo.com/images/default_avatar.gif" style="float:left;
 width:60px; margin-right:20px">
</td><td>
<div style="border:2px dashed #dddddd;padding:5px;width:300px;">
<span style="font-size:16px; color:#3859BB; font-weight:bold">
<?php echo $name;?></span> <br><br>
<?php echo $comment; ?>
  
</div>
</td></tr></tbody></table>
</li>
โค้ดที่เสร็จแล้ว
ไฟล์ newcomment.php
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function() {
  
$(".submit").click(function() {
  
var name = $("#name").val();
var email = $("#email").val();
var comment = $("#comment").val();
var dataString = 'name='+ name + '&email=' + email + '&comment=' + comment;
//alert(dataString);
if(name=='' || email=='' || comment=='')
{
alert('กรุณากรอกข้อมูลให้ครบด้วยนะกรึ๊บ!');
}
else
{
  
$.ajax({
type: "POST",
url: "commentajax.php",
data: dataString,
cache: false,
  
success: function(data){
$("ol#update").append(data);
$("ol#update li:last").fadeIn("slow");
document.getElementById('email').value='';
document.getElementById('name').value='';
document.getElementById('comment').value='';
}
});
}
return false;
});
});
  
</script>
    <style type="text/css">
    .main{
    margin-left:250px;
    }
  
    .submit{
    margin-left:330px;
    background: #2B417D;
    font-weight: bold;
    color:white;
    border-radius:5px;
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    padding: 3px 3px 3px 3px;
    }
    textarea
    {
    color:#000000;
    font-size:14px;
    border:#1BAFD5 solid 2px;
    height:124px;
    margin-bottom:10px;
    width:400px;
    height:80px;
    }
    .star
    {
    color:#FF0000;
    font-size:16px;
    font-weight:bold;
    padding-left:5px;
    }
    #email{
    
    }
    .cleaner_h5{
    height:5px;
    }
    #update{
    border:0px solid #dddddd;
    width:398px;
    padding:10px;
    word-wrap:break-word;
    overflow: hidden;
    }
    ol.showcomment{
     list-style:none;
     font-size:1.2em;
     margin-left: -10px;
    }
    ol.showcomment li{
    display:none;
    position:relative;
    padding:.7em 0 .6em 0;
    }
    ol.oldcomment{
    list-style:none;
    font-size:1.2em;
    margin-left: 0px;
    }
    ol.oldcomment li{
    position:relative;
    padding:.7em 0 .6em 0;
    }
  
    </style>
      
      
      
  
<div class="main">
  
<div id="showcomment">
  
  
<table><tbody><tr><td valign="top">
<img src="http://www.bookneo.com/images_user/admin.png" style="float:left;
 width:60px; margin-right:20px">
</td><td>
<div style="border:2px dashed #dddddd;padding:5px;width:300px;">
<span style="font-size:16px; color:#663399; font-weight:bold"></span>
<span>
<?php echo "<font color='#1BAFD5'><b>admin</b>";//$name ?>
</span> <br><br>
<?php echo " ตรงนี้ท่านก็เขียนโค้ดเพื่อดึงข้อมูลคอมเม้นที่บันทึกแล้วขึ้นมาแสดงก่อน";//$comment ?>
</div>
</td></tr></tbody></table>
  
  
<div style="margin-top:-20px;"></div>
  
<ol id="update" class="showcomment"></ol>
</div>
  
<div class="formcomment">
<div id="loading"></div>
<form action="#" method="post">
  
<input name="title" id="name" type="text">
Name<span class="star">*</span>
<input name="email" id="email" type="text">
Email<span class="star">*</span><br>
<br>
<textarea name="comment" id="comment"></textarea><br>
<input class="submit" value="Submit" type="submit">
  
</form>
  
</div>
</div>
ไฟล์ commentajax.php
<?php

if($_POST)
{
$name=$_POST['name'];
$email=$_POST['email'];
$comment=$_POST['comment'];
    
//เขียนโค้ดบันทึกลงฐานข้อมูลตรงนี้ครับ
  
}
  
else { }
  
?>
<li class="box" valign="top">
<table><tbody><tr><td valign="top">
<img src="http://www.bookneo.com/images/default_avatar.gif" style="float:left;
 width:60px; margin-right:20px">
</td><td>
<div style="border:2px dashed #dddddd;padding:5px;width:300px;">
<span style="font-size:16px; color:#3859BB; font-weight:bold">
<?php echo $name;?></span> <br><br>
<?php echo $comment;?>
  
</div>
</td></tr></tbody></table>
</li>
บทความนี้ก็จบลงเพียงเท่านี้ครับ ผิดพลาดยังไง ขออภัยด้วยครับ



Read More

วิธีการส่งค่าจาก Multiple Listbox ด้วย PHP, jQuery, jSon



เป็นบทความต่อเนื่องจากบทความก่อนหน้า เป็นการส่งค่าแบบ Multiple Listbox ซึ่งสามารถส่งค่าได้ หลายๆตัวในการกด Submit เพียงครั้งเดียว ด้วยการส่งค่าแบบ Array ด้วย PHP, jQuery, jSon...

รูปแบบการส่งค่าด้วย PHP

ข้อสังเกตุ
ท่านสังเกตุดูนะครับตรง name="multiplelisbox[]" ตรงนี้เป็นการส่งค่าแบบ Array ไปให้
PHP ประมวลผลนะครับ

รูปแบบการส่งค่าด้วย jQuery + jSon
jQuery
ข้อสังเกตุ
เก็บค่าแบบ value -> $(selected).val();
เก็บค่าแบบ text -> $(selected).text();
ตรงนี้ var datastring = {'textvalues':JSON.stringify(textvalues)} เป็นการสร้างตัวแปรข้อมูลแบบ jSon ครับ
HTML
Multiple Listbox

รูปแบบการส่งค่าด้วย jQuery
jQuery
ข้อสังเกตุ
เก็บค่าแบบ value -> document.formjquery.listboxjquery[i].value ;
เก็บค่าแบบ text -> document.formjquery.listboxjquery[i].text ;
ตรงนี้ document.formjquery.listboxjquery.length; นับแถวใน from ก่อนจากนั้นก็วนลูป
เฉพาะตัวที่ selected ออกมาครับ
HTML Multiple Listbox

ไฟล์ listboxphp.php สำหรับการรับค่าจาก Listbox
/*---- รับค่าจากการส่งแบบ PHP ----*/
if(isset($_POST['multiplelisboxphp'])){
$text = array($_POST['multiplelisboxphp']);
echo "
"; echo "textvalues = "; foreach ($text as $key => $textvalues){ for($i=0; $i< count($textvalues); $i++){ echo $textvalues[$i]; echo " "; } echo "
"; echo "เป็นการเก็บค่าของ value นะครับ"; } } /*---- รับค่าจากการส่งแบบ jQuery + jSon ----*/ if($_POST['textvalues']){ $textvalues = $_POST['textvalues']; $find = array('\\','"','[',']'); $replace = array("","","",""); $textvalues = str_replace($find, $replace, $textvalues); echo $textvalues; //print_r($textvalues); } /*---- รับค่าจากการส่งแบบ jQuery ----*/ if($_POST['textval']){ $textval = $_POST['textval']; echo $textval; } ?>

บทความนี้ก็ขอจบเพียงเท่านี้ครับ ผิดพลาดยังไง ขออภัยด้วยครับ


Read More

วันพุธที่ 20 มีนาคม พ.ศ. 2556

รู้จักกับ JSON ก่อนที่จะก้าวต่อไป....



json ย่อมาจากคำว่า " JavaScript Object Notation " เป็นฟอร์แมตสำหรับแลกเปลี่ยนข้อมูลคอมพิวเตอร์ ฟอร์แมต JSON นั้นอยู่ในรูปข้อความธรรมดา (plain text) ที่ทั้งมนุษย์และโปรแกรมคอมพิวเตอร์สามารถอ่านเข้าใจได้ ปัจจุบัน JSON นิยมใช้ในเว็บแอปพลิเคชัน โดยเฉพาะ AJAX โดย JSON เป็นฟอร์แมตทางเลือก ในการส่งข้อมูล นอกเหนือไปจาก XML ซึ่งนิยมใช้กันอยู่แต่เดิม สาเหตุที่ JSON เริ่มได้รับความ นิยมเป็นเพราะกระชับและเข้าใจง่ายกว่า XML ....

JSON นั้นใช้ syntax ของภาษาจาวาสคริปต์ แต่ไม่ถูกมองว่าเป็นภาษาโปรแกรม กลับถูกมอง
ว่าเป็นภาษาในการแลกเปลี่ยนข้อมูลมากกว่า ในปัจจุบันมีไลบรารีของภาษาโปรแกรมอื่นๆ
ที่ใช้ประมวลผลข้อมูลในรูปแบบ JSON มากมาย

โค้ดตัวอย่างของ JSON
{ "firstName" : "Bookneo",
                "lastName"  : "Json",
                "age"       : 27
}

json ซึ่งเป็น Text ธรรมดาๆที่ถูกจัดเรียงให้อยู่ในรูปแบบของ Object Array
โดยใช้เครื่องหมาย[ ] แทน Array และ { } แทน Hash (หรือ Associative Array)
เขียนคร่อมข้อมูลไว้ภายใน ซึ่งเป็นการกำหนดคุณสมบัติให้กับวัตถุ
ด้วยการสร้างวัตถุที่เป็นข้อมูลขึ้นมาในรูปแบบของ JSON เช่น

รูปแบบ json
var myObject = {};

ถ้าเป็นแบบเก่าเราจะกำหนดด้วยรูปแบบนี้ ซึ่งเป็นการสร้างตัวแปรชนิด Object ขึ้นมา
var myObject = new Object();

ตัวอย่างการใช้ Object Array มิติเดียวสร้างวัตถุที่เป็นข้อมูลแบบ JSON
var myObject = { "firstName" : "Bookneo",
                  "lastName"  : "Json",
                   "age"       : 27
                };
//เรียกใช้
document.writeln(myObject.firstName);  // Outputs Bookneo
document.writeln(myObject.lastName);   // Outputs Json
document.writeln(myObject.age);        // Outputs 27

//การเรียกใช้แบบ Associative Array
document.writeln(myObject["firstName"]);  // Outputs Bookneo
document.writeln(myObject["lastName"]);   // Outputs Json
document.writeln(myObject["age"]);        // Outputs 27

แต่เมื่อเราต้องการเพิ่ม Object เข้าไปอีก เราก็จะสร้างข้อมูลในรูปแบบของ JSON แบบนี้
ตัวอย่างการใช้ Object Array 2มิติสร้างวัตถุที่เป็นข้อมูลแบบ JSON
var myObject = {
                'animal' : {'dog' : 'friendly' }
               };
//เรียกใช้
document.writeln(myObject.animal.dog); // outputs friendly

แต่เมื่อข้อมูลมีความซับซ้อนมากขึ้นการเก็บข้อมูลก็จะเป็นลักษณะ Object Array แบบหลายมิติ
ตัวอย่างการใช้ Object Array แบบหลายมิติสร้างวัตถุที่เป็นข้อมูลแบบ JSON
var employees = {
    "accounting"    : [
                        { "firstName" : "John",  // First Element
                          "lastName"  : "Doe",
                          "age"       : 23 },

                        { "firstName" : "Mary",  // Second Element
                          "lastName"  : "Smith",
                          "age"       : 32 }
                      ],                               
      "sales"       : [ 
                        { "firstName" : "Sally", // First Element
                          "lastName"  : "Green",
                          "age"       : 27 },

                        { "firstName" : "Jim",   // Second Element
                          "lastName"  : "Galley",
                          "age"       : 41 }
                      ] 
                }
//เรียกใช้
document.writeln(employees.accounting[0].firstName
                + ' ' + employees.accounting[0].lastName);
document.writeln(employees.sales[1].firstName
                + ' ' + employees.sales[1].lastName);

accounting[0] คือ Element ตัวแรกของ accounting ก็คือ John
accounting[1] คือ Element ตัวที่สองของ accounting ก็คือ Mary

JSON สามารถจัดเก็บ Object ไว้ภายใน Object และ Array ไว้ภายใน Array ได้โดยไม่มีขีดจำกัด
ด้วยโครงสร้างของข้อมูลที่เรียบง่าย และมีดัชนีข้อมูลที่ถูกต้องแม่นยำทุกข้อมูล

เอาล่ะครับเราก็รู้จักกับ JSON กันพอสังเขปเท่านั้นนะครับ ส่วนในเรื่องของการใช้งาน เช่น การส่งข้อมูล
การรับข้อมูลแบบ JSON นั้นท่านก็ไปศึกษาเพิ่มเติมเอานะครับ หรือไม่ผมก็อาจจะเขียนบทความเพิ่มเติมในภายหน้า
ก็เป็นได้ครับ

ขอจบบทความนี้เพียงเท่านี้ครับ ผิดพลาดยังไงต้องขอ อภัยด้วยครับ .....


Read More

เก็บ Value, Text จาก Multiple Listbox ด้วย jQuery แบบ Array



เป็นบทความต่อเนื่องจากบทความก่อนหน้า ซึ่งยังขาดการเก็บค่าแบบ Multiple Listbox ซึ่งสามารถเก็บค่าได้ หลายๆตัวในการกด Submit เพียงครั้งเดียว ด้วยการเก็บแบบ Array ด้วย Javascript...

รูปแบบ
jQuery
var values = [];
var textvalues = [];
$('#multiplelistbox :selected').each(function(i, selected) {
values[i] = $(selected).val();
textvalues[i] = $(selected).text();
});


ตัวอย่าง
jQuery
$(function(){
    
$('#textsubmit').click(function(){
var values = [];
var textvalues = [];
$('#multiplelistbox :selected').each(function(i, selected) {
    values[i] = $(selected).val();
    textvalues[i] = $(selected).text();
    alert('text = '+textvalues[i]);
       });
   });
});
Html
Multiple Listbox


Demo

Multiple Listbox





Read More

© Bookneo, AllRightsReserved.

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