Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ผมหัดเขียน OOP insert ข้อมูลลงฐานข้อมูล ขอความเห็นหน่อยครับ



 

ผมหัดเขียน OOP insert ข้อมูลลงฐานข้อมูล ขอความเห็นหน่อยครับ

 



Topic : 049201



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์




พยายามหัดเขียน OO อยู่ครับ ยังไม่เข้าใจเรื่อง ตัวแปรและ ฟังก์ชัน แบบ public private protected ครับ ช่วยดูทีว่าเขียนอย่างนี้ถูกหลักการหรือไม่ อย่างไร

จุดหมายของ code นี้คือ นำค่าที่ได้รับจาก แบบฟอร์ม เช่น ใน $_REQUEST มาดัดแปลงเพื่อความปลอดภัย แล้วนำไปสร้างคำสั่ง sql แล้ว ให้ รันคำสั่งนั้นครับ
Code (PHP)
<?php
//ใช้เชื่อมต่อกับฐานข้อมูล
class db_connect {
	protected $con_st = array('localhost','root','****','dcdvd'); //ควรใช้ private หรือ protected เมื่อไม่ต้องการให้เปลี่ยน และไม่ให้ใครเห็น
	public $link = ''; //ต้องการให้ฟังก์ชันอื่นเรียกใช้ได้ ใช้ public แล้ว จะถูกแก้ไขได้หรือไม่
	protected function __construct() {
		$con_st=$this->con_st ;
		$link = mysql_connect($con_st[0],$con_st[1],$con_st[2]) ;
		mysql_select_db($con_st[3],$link) ;
		$this->link=$link ;
		$this->con_st=$con_st ;
	}
}
//ใช้ดัดแปลงข้อมูลที่ถูกส่งมา คือ ตัดช่องว่างหน้าหลังออก  stripcslashes และ real_escape_string
class request_modify extends db_connect {
	public $fld_nm =array();//เก็บชื่อฟิลด์ที่จะ insert เป็น array
    public $fld_vl = array();//เก็บค่าที่จะinsert เป็นarray เรียงลำดับตรงกับ	$this->fld_nm
	public function __construct($fld_nm,$rq) {
		parent::__construct();
		for($i=0; $i<count($fld_nm); $i++) {
			$rq[$fld_nm[$i]] = trim($rq[$fld_nm[$i]]);
			$rq[$fld_nm[$i]] = stripcslashes($rq[$fld_nm[$i]]);
			$rq[$fld_nm[$i]] = mysql_real_escape_string($rq[$fld_nm[$i]]);
			$fld_vl[$i] = $rq[$fld_nm[$i]];
		}
		$this->fld_nm = $fld_nm ;//เก็บชื่อฟิลด์ที่จะ insert เป็น array
		$this->fld_vl = $fld_vl ;//เก็บค่าที่จะinsert เป็นarray เรียงลำดับตรงกับ	$this->fld_nm
	}
}
//ใช้สร้างคำสั่ง sql
class insertsql extends request_modify {
	public $insertsql = '' ;//คำสั่ง sql ที่จะสร้าง
	public function __construct($fld_nm,$rq,$table_nm){
		parent:: __construct($fld_nm,$rq);
		$this->insertsql  = 'insert into '.$table_nm.' ('.implode($this->fld_nm,',').') value ("'.implode($this->fld_vl,'","').'" )' ;
	}
	public function __toString() {
		return $this->insertsql ;
	}
}
//ใช้ รัน คำสั่ง sql 
class insertexe extends insertsql {
	public $exe = 0 ;//ผลการรันคำสั่ง
    public $last_id = 0 ;//ค่า id ที่ insert ล่าสุด
	public function __construct($fld_nm,$rq,$table_nm){
		parent:: __construct($fld_nm,$rq,$table_nm);
		$this->exe = mysql_query($this->insertsql , $this->link);
		$this->last_id = mysql_insert_id($this->link);
	}
	public function __toString() {
		return $this->last_id ;
	}
}

// การใช้งาน
//รายชื่อฟิลด์ที่จะ insert
$fn = array('name','address','email') ;

//ตารางที่จะ insert
$table = 'member' ;

//ส้รางอินสแตนส์
$a = new insertexe($fn,$_REQUEST,$table) ;

//ถ้ารันคำสั่งสำเร็จ ให้แสดงค่า id ล่าสุด
if($a->exe){
     echo $a->last_id ; //ตรงนี้ผมใช้คำสั่ง echo $a เพื่อเรียก magic method __toString() จะไม่ได้ผล ไมทราบเพราะอะไร
}

//ถ้ารันคำสั่งไม่ได้ ให้แสดง คำสั่งsql
else{
     echo 'fail to run : '. $a->insertsql ;
}
//ขอบคุณครับ

?>




Tag : PHP, MySQL









ประวัติการแก้ไข
2010-09-23 09:23:19
2010-09-23 09:24:04
2010-09-23 09:26:36
2010-09-23 09:27:45
2010-09-23 09:28:24
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-09-23 09:20:19 By : สกล View : 1620 Reply : 4
 

 

No. 1



โพสกระทู้ ( 538 )
บทความ ( 3 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เอาแบบคร่าวๆ แล้วกันนะ

Public : สาธารณะ ใครก็ใช้ตัวแปรตัวนี้ได้
Private : ส่วนตัว ใช้ไดแค่ในช่วงนั้นๆ หรือภายใต้ปีกกาที่ตัวมันถูกประกาศอยู่ คนอื่นไม่เห็น (กรณีสืบทอดคลาสไปก็จะมองไม่เห็น)
Code (C#)
     Class MyClass
       {
           int B=0; //ตัวแปร B จะใช้ได้ตลอด class procedure หรือ function ที่อยุ่ใน class นี้ใช้ได้หมด
           public MyClass()
              {
                  int A=0;  //ตัวแปร A จะใช้ได้แค่ตรงนี้ ภายในปีกกาของ MyClass function
                  A=1;  
                  B=55;
              }
           public int NumAdd(int n1, int n2)
              {
                  B=n1+n2;
                  return B;
              }
       }


Protected : ส่วนตัวแต่อ้างถึงได้ ก็ตามนี้เลยครับ จะเหมือน public+private เช่น
Code (C#)
     Class MyClass
       {
           int B=0; //ตัวแปร B จะใช้ได้ตลอด class procedure หรือ function ที่อยุ่ใน class นี้ใช้ได้หมด
           protected string MyApp = "Demonstrate protected variable";
           public MyClass()
              {
                  int A=0;  //ตัวแปร A จะใช้ได้แค่ตรงนี้ ภายในปีกกาของ MyClass function
                  A=1;  
                  B=55;
              }
           public int PlusNum(int n1, int n2)
              {
                  B=n1+n2;
                  return B;
              }
       }

     Class ClassTest :: MyClass  //สืบทอดมาจาก class ข้างบน
       {
           public ClassTest()
              {
                  printf(this.MyApp);  //จะสามารถอ้างถึงตัวแปร MyApp ของ class แม่ได้แต่ไม่สามารถเปลี่ยนแปลงได้
                  string strTmp = "Call by child class ::" & this.MyApp;
                  printf(strtmp);
              }
           public int DevideNum(int n1, int n2)
              {
                  B=n1/n2;
                  return B;
              }
       }



อันนี้แนะนำ

protected $con_st = array('localhost','root','****','dcdvd'); //ควรใช้ private หรือ

เรื่องการใช้ user/password สำหรับ connect database อยากให้สร้าง user ขึ้นมาใหม่แล้วให้สิทธ์ user นั้นใช้งานได้เฉพาะ database นั้นๆ ดีกว่าครับ ถ้าใช้ root เนี่ย แล้วบอกว่าไ่ม่อยากให้ใครเห็นอ่ะ ถ้ามีคนเห็นขึ้นมาก็สามารถทำได้หมดเลยใน database เรานะ แต่ถ้าเป็น user อื่นก็จะได้สบายใจว่าเค้าก็ทำอะไรกับ table อื่น database อื่นที่อยู่ในเครื่อง ก็จะปลอดภัยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-23 10:52:25 By : salapao_codeman
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

กระทู้รณรงค์ ตอน "มาเขียน php แบบ OOP กันเถอะ"

ลองดูน่ะครับเผื่อจะมีประโยชน์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-23 10:54:49 By : webmaster
 

 

No. 3



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-23 17:29:09 By : สกล
 


 

No. 4

Guest


สำหรับสมาชิกทีต้องการดูผ่าน VDO

Go to : สอนการเขียน PHP กับ OOP (Object Oriented Programming) ผ่าน VDO ออนไลน์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-07 06:47:39 By : thaicreate
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ผมหัดเขียน OOP insert ข้อมูลลงฐานข้อมูล ขอความเห็นหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่