เพิ่ม ลบ แก้ไข ข้อมูล ด้วยคลาส กับ PHP
เป็นคลาส ที่ผมคิดค้นขึ้นมา ซ้ำกับใครก็โทษทีนะค๊าบ เอาล่ะเรามาเริ่มกันเลย

- config.php
<?
DEFINE("_host",  "localhost" ); // host name ชื่อโฮสต์
DEFINE("_db_user",  "root" ); // database user ชื่อผู้ใช้งานดาต้าเบส
DEFINE("_db_pass",  "1234" ); // database pass รหัสผ่าน
DEFINE("_db_name",  "test" ); // database name ชื่อดาต้าเบส
?>

- J_MySQL.php
<?
/********************************************************************
(-/\-)
Create by :: Nattapong Pradabsook, Surin, Thailand
Date  :: 29/08/2010
Good luck :']
********************************************************************/


class J_SQL
{

var $db_host;
var $db_user;
var $db_pass;
var $db_name;
var $db_connect;


function J_SQL()
{
$this->db_host = _host;
$this->db_user = _db_user;
$this->db_pass = _db_pass;
$this->db_name = _db_name;
}

//ฟังก์ชั่นติดต่อฐานข้อมูล
function J_ConnectDB()
{
$this->db_connect  = @mysql_connect($this->db_host,$this->db_user,$this->db_pass) or die(mysql_error());
}

//ฟังก์ชั่นเลือกฐานข้อมูล
function J_SelectDB()
{
@mysql_select_db($this->db_name) or die(mysql_error());
}

//ฟังก์ชั่นที่ทำให้ MySQL แสดงอักขระเป็น tis620
function set_char_tis620()
{
$cs1 = "SET character_set_results=tis620";
$cs2 = "SET character_set_client = tis620";
$cs3 = "SET character_set_connection = tis620";
@mysql_query($cs1) or die('Error query: ' . mysql_error());
@mysql_query($cs2) or die('Error query: ' . mysql_error());
@mysql_query($cs3) or die('Error query: ' . mysql_error());
}

//ฟังก์ชั่นที่ทำให้ MySQL แสดงอักขระเป็น utf8
function set_char_utf8()
{
$cs1 = "SET character_set_results=utf8";
$cs2 = "SET character_set_client = utf8";
$cs3 = "SET character_set_connection = utf8";
@mysql_query($cs1) or die('Error query: ' . mysql_error());
@mysql_query($cs2) or die('Error query: ' . mysql_error());
@mysql_query($cs3) or die('Error query: ' . mysql_error());
}

//ฟังก์ชั่นเรียกดูข้อมูลในฐานข้อมูล  คืนค่าเป็น อะเรย์
function J_Select($fieldNames,$tableName)
{
$sql = "SELECT ".$fieldNames." FROM ".$tableName;
$rs = @mysql_query($sql) or die(mysql_error());
while($row = @mysql_fetch_array($rs))
{
$array[] = $row;
}
return $array;
}


//ฟังก์ชั่นเพิ่มข้อมูลลงในฐานข้อมูล
 function J_Insert($fieldsAndValues,$tableName)
 {
   $sql = "INSERT INTO ".$tableName;
  $f = "(";
  $val = " VALUES(";
  for($i = 0 ; $i < count($fieldsAndValues);$i++)
  {
   $f .= key($fieldsAndValues);
   if($i != (count($fieldsAndValues)-1))
    $f .= ",";
   $val .= "'".$fieldsAndValues[key($fieldsAndValues)]."'";
   if($i != (count($fieldsAndValues) - 1))
    $val .= ",";
   next($fieldsAndValues);
  }
  $f .= ")";
  $val .= ")";
    $sql .= $f.$val;
  return @mysql_query($sql) or die(mysql_error());  
 }
 
//ฟังก็ชั่นปรับปรุงข้อมูลในฐานข้อมูล
 function J_Update($fieldsAndValues,$key,$tableName)
 {
  $sql = "UPDATE ".$tableName." SET "; 
  $w  = "";
  for($i = 0 ; $i < count($fieldsAndValues);$i++)
  {
   $sql .= key($fieldsAndValues)." = '".$fieldsAndValues[key($fieldsAndValues)]."'";
   if($i != (count($fieldsAndValues)-1))
    $sql .= ", ";
   
   if($i == $key[$i])
   {
    $w .= key($fieldsAndValues)." = '".$fieldsAndValues[key($fieldsAndValues)]."'";
    if($i != (count($key)-1))
     $w .= " AND ";
   }   
   next($fieldsAndValues);
  }
   $sql .= " WHERE ".$w;
  return @mysql_query($sql) or die(mysql_error());
 }


//ฟังก์ชั่นทำคำสั่ง sql โดยไม่มีการแสดงผลเช่น INSERT, DELETE, UPDATE
 function J_ExecuteNonQuery($sql)
 {
  @mysql_query($sql) or die(mysql_error());
 }


//ฟังก็ชั่นลบข้อมูลในฐานข้อมูล
 function J_Delete($fieldsAndValues,$tableName)
 {
  $sql = "DELETE FROM ".$tableName; 
  $w  = "";
 for($i = 0 ; $i < count($fieldsAndValues);$i++)
 {
  $w .= key($fieldsAndValues)." = '".$fieldsAndValues[key($fieldsAndValues)]."'";
  if($i != (count($fieldsAndValues)-1))
   $w .= " AND ";

    next($fieldsAndValues);
  }
    return @mysql_query($sql) or die(mysql_error());
 }


 //ฟังก์ชั่นปิดการเชื่อมต่อฐานข้อมูล
 function J_Close()
 {
  @mysql_close($this->db_connect);
 }
}
?>


สร้างตารางที่มีฟีลด์ตามนี้ครับ
ฟิลด์
id
name
phone
email




เมื่อสร้างเสร็จแล้วเราก็มาลุยกันเลย
เริ่มต้นด้วยการ INSERT

- insert.php
<?
include("config.php"); // เรียกไฟล์ config.php เข้ามา
include("J_MySQL.php"); // เรียกไฟล์ J_MySQL.php เข้ามา

$juice = new J_SQL; //สร้างออบเจ็ค J_SQL ขึ้นมา

//เรียกใช้เมธอด J_ConnectDB() หรือจะเรียกว่าฟังก์ชั่นก็ได้
//งั้นเรียกฟังก์ชั่นดีกว่า ต่อไปนี้ขอเรียกเมธอด ว่าฟังก์ชั่นก็แล้ว -*-
//ส่วนฟังก์ชั่น แต่ล่ะตัวคืออะไรให้กลับไปดูที่ไฟล์ J_MySQL.php

$juice->J_ConnectDB();
$juice->J_SelectDB();  // เรียกใช้ฟังก์ชั่น J_SelectDB()
$juice->set_char_utf8(); // เรียกใช้ฟังก์ชั่น set_char_utf8()

// ทีเด็ดอยู่ที่ตรงนี้ครับ ฮ่าๆๆๆๆ

$ins["id"] = "1";
$ins["name"] = "juice";
$ins["phone"] = "044-444288";
$ins["email"] = "info@step-juice.com";

/**
ที่เห็นอยู่ด้านบนก็คือ Array แบบกำหนด Key นั้นเอง
คงเดาออกแล้วใช้ไหมครับว่าผมใช้ Array ทำอะไร
สังเกตว่า Key ของ Array ที่มีชื่อว่า $ins นั้นมีชื่อตรงกับ
ฟิลล์ใน Tabale tbl_test เลยใช่ไหมครับ
แล้วค่าใน Array ก็คืออ.. ใช่แล้วว คือค่าที่เราจะ Insert เข้าไปนั้นเอง
**/

/**
เอาล่ะมาดู Code กันต่อมันยังไม่จบ -*-
ต่อไปเรียกใช้ฟังก์ชั่น J_Insert() มี อาร์กิวเมนต์ สองตัว
ตัวแรกรับค่าเป็น Array ในที่นี้ใส่ Array ที่ชื่อว่า $ins นั่นเอง
ตัวที่สองรับค่าเป็น String ให้เราใส่ชื่อ Table เข้าไป
ในที่นี้ Table ของเรามีชื่อว่า "tbl_test" นั่นเอง ^^
**/

$juice->J_Insert($ins,"tbl_test");
$juice->J_Close();  // ปิดการเชื่อมต่อ Database
?>

- select.php
<?
include("config.php");
include("include/J_MySQL.php");

$juice = new J_SQL;
$juice->J_ConnectDB();
$juice->J_SelectDB();
$juice->set_char_utf8();

$fieldName = "name,email";
$tableName = "tbl_test";
$result = $juice->J_Select($fieldName,$tableName);
if(count($result) > 0){
foreach($result as $read)
{
echo "name :: ".$read["name"]." <br / > "; // tag br  มันพิมพ์ยากแท้ใน bloger -*- แก้ให้ถูกด้วยนะคับ
echo "email :: ".$read["email"]." <br / > ";
}
}
$juice->J_Close();
?>

- update.php
<?
include("config.php");
include("include/J_MySQL.php");

$juice = new J_SQL;
$juice->J_ConnectDB();
$juice->J_SelectDB();
$juice->set_char_utf8();

$ins["id"] = "1";
$ins["email"] = "info@step-juice.blogspot.com"; //ค่าที่ต้องการ Update ในฟิลล์ Email
$key = array(0);
//$key = array(0); หมายถึงใช้ array ตัวที่ 0 เป็นเงื่อนไขในการ WHERE
//ในที่นี้จะได้เป็น WHERE id = 1; ลองเล่นดูครับ
$juice->J_Update($ins,$key,"tbl_test");
$juice->J_Close();
//อัพเดตเสร็จให้กลับไป select ข้อมูลขึ้นมดูอีกทีที่ ไฟล์ select.php เลยครับ
?>



- delete.php
<?
include("config.php");
include("include/J_MySQL.php");

$juice = new J_SQL;
$juice->J_ConnectDB();
$juice->J_SelectDB();
$juice->set_char_utf8();

$del["id"] = "1"; //เงื่อนไขที่ต้องการ delete ในฟิลล์ id
$del["email"] = "info@step-juice.blogspot.com"; //เงื่อนไขที่ต้องการ delete ในฟิลล์ Email

$juice->J_Delete($del,"tbl_test");
//ในที่นี้จะได้เป็น DELETE FROM tbl_test WHERE id = '1' AND email = 'info@step-juice.blogspot.com';

$juice->J_Close();

//ลบเสร็จให้กลับไป select ข้อมูลขึ้นมดูอีกทีที่ ไฟล์ select.php เลยครับ
?>


ถ้าไม่เข้าใจตรงไหนถามได้เลยนะครับ
จะพยายามแวะมา อธิบายเพิ่มเติม ^^"

5 ความคิดเห็น

  1. ขอถามหน่อยครับ
    แล้วถ้าในดาต้าเบสเรามีตัวอักขระ ' หรือ & หรืออักขระอื่นๆจะเรียกมาแสดงในหน้าเว็บเรายังไงอ่าครับ
    ใช้ฟังก์ชั่นอะไรแล้วเรียกยังไงหรอครับ
    ขอบคุณล่วงหน้าครับ

    ตอบลบ
  2. เรียกได้แต่จะส่งค่าไปหน้าอื่น ข้อความที่ต่อหลังอักขระมันไม่ไปอ่าครับ

    ตอบลบ
  3. โอ้วต้องขอโทษด้วยผมเพิ่งมาเห็น เม้น T^T
    คงจะได้คำตอบไปแล้วใช่ไหมครับ อุส่ามีคนมาเม้นทั้งที
    T^T ต้องขอโทษจริงๆ

    ตอบลบ
  4. ไม่ระบุชื่อ21 มกราคม 2555 เวลา 20:13

    แร้วลบอ่ะครับเขียนยังไงครับ

    ตอบลบ
    คำตอบ
    1. ผมเพิ่ม function delete ในไฟล์ - J_MySQL.php แล้วครับ ส่วนวิธีใช้ดูตามตััวอย่างด้านบนนะครับ
      ผมอัพเดตบทความให้ใหม่แล้ว

      ถ้ามีเงื่อนไขในคำสั่ง sql ที่ยุ่งยากก็เขียนคำสั่งเองดีกว่าครับ แหะๆ แล้วไปเรียกใช้ function J_ExecuteNonQuery
      ป้อนคำสั่ง sql ไปตรงๆเลยก็ได้ครับ จะเหมือนกับ mysql_query();
      function J_ExecuteNonQuery($sql)
      {
      @mysql_query($sql) or die(mysql_error());
      }

      ลบ