ข้ามไปที่เนื้อหาหลัก

สร้างฟังก์ชั่น เพื่อลดความซ้ำซ้อนในการเขียนโปรแกรม

เขียนฟังก์ชั่นสำหรับ SELECT / INSERT / UPDATE / DELETE / CANCEL ข้อมูล
เพื่อลดความซ้ำซ้อนในการเขียนโปรแกรมด้วยภาษา PHP

ปกติแล้วเมื่อเริ่มฝึกเขียนโปรแกรม PHP การจัดการกับข้อมูลต่างๆในฐานข้อมูลนั้น เราจะต้องใช้คำสั่งเดียวกันซ้ำๆ อยู่หลายครั้ง ซึ่งแต่ละครั้งก็จะเปลี่ยนชื่อฟิลด์และตารางที่เก็บข้อมูลให้ตรงกับที่เราต้องการ วิธีการที่รวดเร็วที่สุดคือการคัดลอกซอร์สโค๊ดเดิม แล้วมาดัดแปลงแก้ไข



ในบทความก่อนหน้านี้ได้แนะนำเครื่องมือสร้างเองสำหรับช่วยลดเวลาการเขียนโค๊ดให้น้อยลงด้วยวิธีการ สร้างตัวแปร และโค๊ด SQL สำหรับ INSERT ลงฐานข้อมูล MySQL จะช่วยให้เราไม่ต้องนั่งพิมพ์ชื่อฟิลด์ให้ยุ่งยากอีกต่อไป แค่คัดลอกมาจากหัวตารางของ phpMyAdmin แล้ววางลงในแบบฟอร์มกดสร้างคำสั่งได้ทันที



ถ้าได้ลองเข้าไปใช้งานดูจะพบว่าผลลัพธ์ที่ได้นั้นมีให้เลือกใช้อยู่ด้วยกัน 3 แบบ สำหรับเริ่มแรกที่ผมเขียนโปรแกรม PHP นั้นนิยมแบบที่ 1 ที่สุด แต่พอเขียนไปนานเข้าๆ ก็ได้รู้จักการสร้างฟังก์ชั่นใช้เอง และ CodeIgniter Framework ทำให้รูปแบบการเขียนโปรแกรมเปลี่ยนไปมากทีเดียว

บทความนี้ผมจะมาแนะนำการสร้างฟังก์ชั่นเพื่อรองกับกับการ สร้างตัวแปร และโค๊ด SQL สำหรับ INSERT ลงฐานข้อมูล MySQL ในแบบที่ 2 ซึ่งได้ผลลัพธ์ในรูปแบบอาร์เรย์ เพื่อนำมาใช้งานกับฟังก์ชั่นที่จะสร้างขึ้นมานี้

1. ไฟล์เชื่อมต่อฐานข้อมูล (ถ้ามีอยู่แล้วก็ใช้ไฟล์เดิม) ในตัวอย่างจะใช้ include/connect.php
<?php
 $dbHost = "localhost";
 $dbUser = "sunzandesign";
 $dbPass = "13579";
 $objConnect = mysql_connect($dbHost,$dbUser,$dbPass) or die(mysql_error());
 $objDB = mysql_select_db("test");
 mysql_query('SET NAMES UTF8');
?>


2. สร้างไฟล์ db_manage.php เก็บไว้ในโฟลเดอร์ function จะได้พาธเป็น ( function/db_manage.php)
<?php
 /**
  *  คืนสถานะเรคอร์ดที่ถูกยกเลิก
  * @param String $tablename ชื่อตาราง
  * @param String $array กำหนดตัวเลือกอื่นๆ
  */
 function select($tablename, $array = array(), $debug = NULL){
  $array['select']  = (isset($array['select']) && $array['select']!='')  ? $array['select']  : '*';
  $array['where']  = (isset($array['where'])  && $array['where']!='')  ? $array['where']  : '1';
  $array['join']   = (isset($array['join'])  && $array['join']!='')   ? $array['join']  : '';
  $array['group_by']  = (isset($array['group_by']) && $array['group_by']!='') ? 'GROUP by '.$array['group_by'] : '';
  $array['order_by']  = (isset($array['order_by']) && $array['order_by']!='') ? 'ORDER by '.$array['order_by'] : '';
  $array['limit']  = (isset($array['limit'])  && $array['limit']!='')  ? 'LIMIT '.$array['limit']    : '';
  $sql = "SELECT $array[select] FROM $tablename $array[join] WHERE $array[where] $array[group_by] $array[order_by] $array[limit]";
  if($debug == 'debug') echo $sql;
  $qry = mysql_query($sql) or die(mysql_error());
  if($qry){
   return mysql_fetch_assoc($qry);
  }
 }
 
 /**
  *
  * ฟังก์ชั่นสำหรับสร้างคำสั่ง insert ทำงานภายใต้ไฟล์ config ระบบและการเชื่อมต่อฐานข้อมูลแล้ว
  * @param String $table ชื่อฐานข้อมูล.ตาราง ที่ใช้
  * @param Array $arr_data อาร์เรย์ข้อมูลที่ key=ชื่อฟิลด์ในตาราง ส่วน value = ข้อมูลที่จะบันทึก
  * @return Sting ที่เป็นคำสั่ง SQL
  */
 function insert($table, $arr_data)
 {
  $key_sign = '';
  $val_sign = '';
  $field_name = '';
  $field_value = '';
  foreach($arr_data as $key=>$val)
  {
   $field_name .= $key_sign.$key;
   $field_value .= $val_sign. addslashes($val);
   if($key_sign==''){ $key_sign = ', ';}
   if($val_sign==''){ $val_sign = "', '";}
  }
  $result = mysql_query("INSERT INTO $table ($field_name) VALUES ('$field_value')") or die(mysql_error());
  if($result) return mysql_insert_id();
 }//function
 
 /**
  *
  * ฟังก์ชั่นสำหรับสร้างคำสั่ง update ทำงานภายใต้ไฟล์ config
  * @param String $table ชื่อฐานข้อมูล.ตาราง ที่ใช้
  * @param Array $arr_data อาร์เรย์ข้อมูล key=ชื่อฟิลด์ที่จะอัพเดต ส่วน value = ข้อมูลใหม่
  * @param String $where_condition เงื่อนไขการอัพเดต
  * @return Sting ที่เป็นคำสั่ง SQL
  */
 function update($table, $arr_data, $where_condition){
  if($table != '' && count($arr_data) && $where_condition!=''){
   $sign='';
   $set_field = '';
   foreach($arr_data as $field=>$value)
   {
    $set_field .= $sign."$field='". addslashes($value) ."'";
    if($sign==''){ $sign = ', ';}
   }
   echo "UPDATE $table SET $set_field WHERE $where_condition";
   return mysql_query("UPDATE $table SET $set_field WHERE $where_condition") or die(mysql_error());
  }
 }
 
 /**
  * ลบข้อมูลในเรคอร์ดนั้นอย่างถาวร
  * @param String $table ชื่อตาราง
  * @param String $where_condition เงื่อนไขที่ใช้ลบ
  */
 function delete($table, $where_condition){
  if($table != '' && $where_condition!=''){
   return mysql_query("DELETE FROM $table WHERE $where_condition") or die(mysql_error());
  }
 }
 
 /**
  *  ยกเลิกการใช้เรคอร์ดนั้น (กรณีที่ไม่ต้องการลบ)
  * @param String $tablename ชื่อตาราง
  * @param String $cond เงื่อนไขที่ใช้ค้นหา
  */
 function cancel($tablename, $cond){
  $array = array('status' => STATUS_CANCEL);
  return update($tablename, $array, $cond);
 }
 
 /**
  *  คืนสถานะเรคอร์ดที่ถูกยกเลิก
  * @param String $tablename ชื่อตาราง
  * @param String $cond เงื่อนไขที่ใช้ค้นหา
  */
 function active($tablename, $cond){
  $array = array('status' => STATUS_ACTIVE);
  return update($tablename, $array, $cond);
 }
 
?>


3. นำฟังก์ชั่นที่สร้างแล้วไปใช้งานในหน้าต่างๆ ด้วยคำสั่ง include 'function/db_manage.php';
<?php
 /*---------------------------- ตัวอย่างการใช้งาน ----------------------------*/
 include 'include/connect.php';
 include 'function/db_manage.php';
 
 $myTable = 'tb_payment';//กำหนดชื่อตาราง
 
 
 /*---------------------------- ตัวอย่าง SELECT ----------------------------*/
 $arrayOption = array(
     "where" => "payment_amount > 4000",
     "order_by" => "payment_amount"
    );
 $data = select($myTable, $arrayOption, 'debug');
 
 
 /*---------------------------- ตัวอย่าง INSERT ----------------------------*/
 $dataInsert = array(
  'payment_customer_id' => 56234112, //$_POST['payment_customer_id'],
  'payment_date' => '2013-05-30',//$_POST['payment_date'],
  'payment_amount' => 2000,//$_POST['payment_amount'],
 );
 $id = insert($myTable, $dataInsert);
 
 
 /*---------------------------- ตัวอย่าง UPDATE ----------------------------*/
 $dataUpdate = array(
  'payment_customer_id' => 56234112, //$_POST['payment_customer_id'],
  'payment_date' => '2013-05-30',//$_POST['payment_date'],
  'payment_amount' => 2000,//$_POST['payment_amount'],
 );
 $qry = update($myTable, $dataUpdate, "payment_id = 3");
 
 
 /*---------------------------- ตัวอย่าง DELETE ----------------------------*/
 $qry = delete($myTable, "payment_id = 3");
 
 
 /*---------------------------- ตัวอย่างยกเลิก Record----------------------------*/
 $qry = cancel($myTable, "payment_id = 3");
 
 /*---------------------------- ตัวอย่างเปิดใช้ Record ----------------------------*/
 $qry = active($myTable, "payment_id = 3");

?>




PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 4,500 บาท
http://fastcoding.phpcodemania.com/

ความคิดเห็น

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สร้างแบบฟอร์มล็อกอิน HTML + PHP

       ผมจะสร้างระบบตัวอย่างเพื่อแสดงให้เห็นการทำงานของสคริปต์ PHP ที่ใช้ในการล็อกอินอย่างง่ายๆ นะครับ โดยที่ผมจะสร้างโฟลเดอร์ใหม่ขึ้นในไดร์ฟที่เราได้กำหนดให้เป็น Directory Root สำหรับรันสคริปต์ PHP ซึ่งผมกำหนดเอาไว้ที่ D:\www ดังนั้นผมจะสร้างโฟลเดอร์ teacher_assistant ขึ้นมาใหม่จะได้พาธเป็น D:\www\teacher_assistant สำหรับการเข้าถึง จะใช้ URL ดังนี้ http://localhost/teacher_assistant หลังจากสร้างโฟลเดอร์เสร็จเรียบร้อยก็จะเริ่มกระบวนการเตรียมโครงสร้างโปรเจ็กต์ด้วยเครื่องมือช่วยเขียนโปรแกรมชื่อว่า eclipse ซึ่งดูวิธีการสร้างโปรเจ็กต์ได้จากบทความ เริ่มต้นสร้างโปรเจ็กต์ ด้วยโปรแกรม eclipse เครื่องมือเขียนโปรแกรม php ในบทความเป็นการสร้างโปรเจ็กต์ที่มีพาธเป็นโฟลเดอร์ login แต่ในที่นี้ต้องเป็นพาธให้ตรงกับโฟลเดอร์ใหม่ที่เราได้สร้างขึ้นด้วยนะครับ

PHP กับการคิดส่วนลดเป็นเปอร์เซ็น 5%, 10%, 20% ตามช่วงราคาที่กำหนด

<?php     $total_price = 1000;     $discount = 0;         if($total_price >= 500 && $total_price < 1001){         $discount = 5;     }elseif($total_price >= 1001 && $total_price <= 5000){         $discount = 10;     }elseif($total_price >= 5001){         $discount = 20;     }         $discount_bath = ($total_price*$discount)/100; ?> <pre> ซื้อสินค้าครบ 0 ถึง 499 บาท ไม่ได้ส่วนลด ซื้อสินค้าครบ 500 ถึง 1000 บาท ได้ส่วนลด 5% ซื้อสินค้าครบ 1001 ถึง 5000บาท ได้ส่วนลด 10% ซื้อสินค้าครบ 5001 บาทขึ้นไป ได้ส่วนลด 20% </pre> <h3>รวมราคาสินค้า = <?php echo number_format($total_price,2);?></h3> <h5>ส่วนลด = <?php echo $discount;?>%  (<?php echo $discount_bath;?> บาท)</h5> <h2>ราคาหลังส่วนลด = <?php echo number_format($total_price - $discount_bath,2);?>บาท</h2> "PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต