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

วันศุกร์ที่ 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

© Bookneo, AllRightsReserved.

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