ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

 

ใน Joomla นั้น ถ้าจะเขียนการติดต่อเชื่อมฐานข้อมูล มีวิธีการง่ายๆดังนี้

1. Connect Database 


ให้ใช้คำสั่ง 
$db =& JFactory::getDBO();ถ้าเทียบกับ PHP แล้วก็คือคำสั่ง
$con = mysql_connect("localhost","root","password");นั้นเอง

2. Code SQL


ใน Joomla นั้นถ้าจะใช้คำสั่ง SQL ก็ คล้ายๆกับ PHP แต่จะแตกต่างตรงที่ ชื่อ ฟิลด์ กับ ข้อมูล นั้นจะอ้างต่างกัน
ชื่อฟิลด์จะต้องเป็น 

$db->nameQuote('ชื่อฟิลด์')ส่วน ข้อมูลจะต้องเป็น
$db->quote('ข้อมูล')

ตัวอย่าง วิธีการใช้งาน
 
$query = "
SELECT *
FROM ".$db->nameQuote('#__example_table')."
WHERE ".$db->nameQuote('id')." = ".$db->quote('999999').";
";
ข้อควรระวัง ควรระวังเรื่องการเชื่อมคำเช่น . และ "" ให้ดี อย่าให้พลาด
 
3.setQuery($query)
 
ก็ตามชื่อเลย เป็นการ set query ที่เราเขียนคำสั่ง sql เอาไว้ เมื่อจะนำเอาไปใช้ให้ทำการ set query ก่อน เป็นการกรองคำที่มีผลต่อ SQL เพื่อไม่ให้ SQL โดน Injection ทำให้เพิ่มความปลอดภัยกับระบบของเรามากขึ้น
 
ตัวอย่าง
$db->setQuery($query);

4.query()
 
เมื่อทำการ setQuery เสร็จแล้วก็ให้ใช้คำสั่ง query() เลยเพื่อเป็นการ result ข้อมูลตามที่เราได้เขียนไว้
 
ตัวอย่าง
$db->query();


5.insertid()
 
เป็นการเลือกเอาค่า Auto ID เวลาที่เรา ทำการ Add ข้อมูลไปล่าสุด ซึ่งอาจจะเอาค่าไอดีนี้ไปทำอะไรต่ออย่างอื่นได้
 
ตัวอย่าง
$user_id = $db->insertid();

6.loadRow() / loadRowList()
 
คือการ โหลด แถวข้อมูลทั้งหมดใน ตารางนั้นๆ *ถ้าใช้ loadRowList() ข้อมูลจะออกมาทุกแถว แต่ถ้าไม่มีคำว่า List ข้อมูลจะออกมาแค่แถวเดียว
 
ตัวอย่าง
id name email username
1 John Smith johnsmith@domain.example johnsmith
2 Magda Hellman magda_h@domain.example magdah
3 Yvonne de Gaulle ydg@domain.example ydegaulle

. . .
$db->setQuery($query);
$row = $db->loadRow();
print_r($row);

ผลที่ได้จะเป็น ตัวแปร Array ซึ่ง สามารถจะเอาไปใช้ได้เลยโดยอ้าง index เป็นเลขแถว
Array ( [0] => 1 [1] => John Smith [2] => johnsmith@domain.example [3] => johnsmith )
 
7.loadObject() / loadObjectList()
 
คือการโหลด คอลัม ต่างๆใน ตารางนั้นๆ ซึ่งถ้าใช้ loadObjectList() จะเป็นการเอาทุกข้อมูลใน คอลัมที่เราอ้างใน Index ของ Array 
 
ตัวอย่าง
id name email username
1 John Smith johnsmith@domain.example johnsmith
2 Magda Hellman magda_h@domain.example magdah
3 Yvonne de Gaulle ydg@domain.example ydegaulle

. . .
$db->setQuery($query);
$row = $db->loadObjectList();
print_r($row);

Array (
[0] => Array ( [id] => 1 [name] => John Smith [email] => johnsmith@domain.example [username] => johnsmith )
[1] => Array ( [id] => 2 [name] => Magda Hellman [email] => magda_h@domain.example [username] => magdah )
[2] => Array ( [id] => 3 [name] => Yvonne de Gaulle [email] => ydg@domain.example [username] => ydegaulle )
) 
นี้เป็นผลลัพท์จากการใช้ loadObjectList(); จึงได้ ข้อมูลทั้งหมดออกมา แต่ถ้า ไม่มีคำว่า List จะออกมาแค่ข้อมูลเดียว
 
นี้เป็นแค่ข้อมูลบางส่วน ถ้าใครต้องการศึกษาเพิ่มเติม สามารถเข้าไปดูได้ที่ http://docs.joomla.org/Accessing_the_database_using_JDatabase
 ซึ่งเป็นข้อมูลภาษาอังกฤษ สามารถดูได้ละเอียดกว่านะครับ
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
บริษัท RCP ลูกค้ายืนยันการใช้งานได้ให้อัพขึ้นฐานจริง
โดย Rujikon พฤ 21 มิ.ย. 2018 7:20 pm บอร์ด Mindphp Task (ทดลองงาน)
2
5
ศ 22 มิ.ย. 2018 3:56 am โดย mindphp
New อัพเดท state auto หลังR- จาก state ของ RMA เป็น deliver [2018-06][003]
โดย Rujikon พฤ 21 มิ.ย. 2018 7:18 pm บอร์ด อาร์ซีพี โกลบอล จำกัด - Tester
1
2
พฤ 21 มิ.ย. 2018 7:19 pm โดย Rujikon
R - เปลี่ยนชื่อปุ่ม RMA Line จาก Confirm เป็น Receive [2018-06][002]
โดย Rujikon พฤ 21 มิ.ย. 2018 7:13 pm บอร์ด อาร์ซีพี โกลบอล จำกัด - Tester
2
3
พฤ 21 มิ.ย. 2018 7:14 pm โดย Rujikon
Q - Import ไฟล์ Customer เข้าระบบไม่ได้
โดย Rujikon พฤ 21 มิ.ย. 2018 4:49 pm บอร์ด บริษัท เซนิธ เบบี้ แคร์ จำกัด - Tester
3
8
พฤ 21 มิ.ย. 2018 4:59 pm โดย thatsawan
ยืนยันหน้าจอการทำงานของ auto transfer และคำถาม
โดย nuattawoot พฤ 21 มิ.ย. 2018 2:06 pm บอร์ด Hachanna - Testter
5
27
ศ 22 มิ.ย. 2018 4:13 am โดย mindphp
ฺB - ปรับ Inventory loss แล้วไม่ได้อย่างที่กระทู้แนะนำ [2018-06][009]
โดย Rujikon พฤ 21 มิ.ย. 2018 1:59 pm บอร์ด Hachanna - Testter
0
2
พฤ 21 มิ.ย. 2018 1:59 pm โดย Rujikon
Q - เรื่องภาษี [2018-06][008]
โดย Rujikon พฤ 21 มิ.ย. 2018 1:48 pm บอร์ด Hachanna - Testter
0
5
พฤ 21 มิ.ย. 2018 1:48 pm โดย Rujikon
งานประจำวันที่ 21มิถุนายน 2561
โดย taemmynatchapon พฤ 21 มิ.ย. 2018 10:19 am บอร์ด M063 - ณัชพล ชัยวุฒิ
0
1
พฤ 21 มิ.ย. 2018 10:19 am โดย taemmynatchapon
งานประจำวันที่ 21 มิถุนายน 2561
โดย Rujikon พฤ 21 มิ.ย. 2018 10:05 am บอร์ด M060 - นายรุจิกร พงษ์พิละ
2
8
พฤ 21 มิ.ย. 2018 7:22 pm โดย Rujikon
งานประจำวันที่ 21 มิถุนายน 2561
โดย wilawan พฤ 21 มิ.ย. 2018 9:48 am บอร์ด M062 - วิลาวัณย์ นักษัตรมณฑล
1
12
พฤ 21 มิ.ย. 2018 6:46 pm โดย wilawan
งานประจำวันที่ 21 มิถุนายน 2561
โดย Parichat พฤ 21 มิ.ย. 2018 9:37 am บอร์ด M061 - ปาริชาติ รัตโณภาส
1
4
พฤ 21 มิ.ย. 2018 7:14 pm โดย Parichat
เมื่อมีโอกาสทำงาน...
โดย mindphp พฤ 21 มิ.ย. 2018 12:59 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
20
พฤ 21 มิ.ย. 2018 12:59 am โดย mindphp
R - รายละเอียดวิธีคิดต้นทุนสินค้า [2018-06][007]
โดย Rujikon พ 20 มิ.ย. 2018 8:06 pm บอร์ด Mindphp Task (ทดลองงาน)
0
2
พ 20 มิ.ย. 2018 8:06 pm โดย Rujikon
สอบถามเกี่ยวกับ onclick html
โดย AePongsak พ 20 มิ.ย. 2018 6:33 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
20
พ 20 มิ.ย. 2018 6:33 pm โดย AePongsak
B - ปุ่มปริ้น inv มี 2 ปุ่ม
โดย thatsawan พ 20 มิ.ย. 2018 6:25 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
0
1
พ 20 มิ.ย. 2018 6:25 pm โดย thatsawan
R - รายละเอียดวิธีคิดต้นทุนสินค้า [2018-06][007]
โดย Rujikon พ 20 มิ.ย. 2018 4:21 pm บอร์ด Hachanna - Testter
1
13
พ 20 มิ.ย. 2018 9:00 pm โดย Rujikon
B - หน้า Detail ช่องว่างด้านล่างเยอะไป
โดย AePongsak พ 20 มิ.ย. 2018 2:23 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
8
พฤ 21 มิ.ย. 2018 12:00 pm โดย Parichat
B - คลิกที่รูปแล้วไม่ไปหน้า Detail
โดย AePongsak พ 20 มิ.ย. 2018 2:20 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
3
พฤ 21 มิ.ย. 2018 1:11 pm โดย Parichat
B - กรอบหน้าดาวน์โหลดไม่โค้ง
โดย AePongsak พ 20 มิ.ย. 2018 2:11 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
7
พฤ 21 มิ.ย. 2018 5:16 pm โดย Parichat
B - ไม่เห็นตัวเลขที่ แบ่งหน้าสินค้า
โดย AePongsak พ 20 มิ.ย. 2018 2:07 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
3
พฤ 21 มิ.ย. 2018 1:15 pm โดย Parichat