ดึงข้อมูล จากฐานข้อมูล สร้าง รายการเครือข่าย แบบ tree ด้วย php
18 September 2010ตัวอย่าง วิธีการเขียนโค้ด ต่อไปนี้ เป็นแนวทางสำหรับสร้าง รายการแบบ tree จากการดึงข้อมูลในฐานข้อมูล มาประยุกต์ใช้ ตัวอย่างผลลัพธ์
- 1
- 1.1
- 1.2
- 1.2.1
- 2
- 2.1
- 2.1.1
- 2.1.2
- 2.2
- 2.2.1
- 2.2.1.1
- 2.2.2
- 2.2.2.1
- 2.2.1
- 2.1
- 3
- 3.1
เราสามารถนำไปประยุกต์ เช่น สร้างเป็นรายการเมนู , สร้างเป็นสารบัญเนื้อหา , สร้างเป็นโครงสร้างองค์กร สร้างเป็นเครือข่ายงาน MLM เป็นต้น
ในตัวอย่างผลลัพธ์ เป็นเพียง การแสดงรายการในลักษณะ โครงสร้าง tree เท่านั้น สามารถนำไป กำหนดการแสดง จัดและตกแต่ง ให้สวยงามได้ด้วย css
ฐานข้อมูลสำหรับ ทดสอบ
/*
MySQL Data Transfer
Source Host: localhost
Source Database: test
Target Host: localhost
Target Database: test
Date: 9/16/2010 4:56:28 PM
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tbl_category
-- ----------------------------
DROP TABLE IF EXISTS `tbl_category`;
CREATE TABLE `tbl_category` (
`category_id` int(11) NOT NULL auto_increment,
`category_name` varchar(255) NOT NULL,
`category_parent` int(11) NOT NULL,
PRIMARY KEY (`category_id`)
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `tbl_category` VALUES ('1', '1', '0');
INSERT INTO `tbl_category` VALUES ('2', '1.1', '1');
INSERT INTO `tbl_category` VALUES ('3', '1.2', '1');
INSERT INTO `tbl_category` VALUES ('4', '1.2.1', '3');
INSERT INTO `tbl_category` VALUES ('5', '2', '0');
INSERT INTO `tbl_category` VALUES ('6', '2.1', '5');
INSERT INTO `tbl_category` VALUES ('7', '2.2', '5');
INSERT INTO `tbl_category` VALUES ('8', '2.1.1', '6');
INSERT INTO `tbl_category` VALUES ('9', '2.1.2', '6');
INSERT INTO `tbl_category` VALUES ('10', '2.2.1', '7');
INSERT INTO `tbl_category` VALUES ('11', '2.2.2', '7');
INSERT INTO `tbl_category` VALUES ('12', '2.2.2.1', '11');
INSERT INTO `tbl_category` VALUES ('13', '2.2.1.1', '10');
INSERT INTO `tbl_category` VALUES ('14', '3', '0');
INSERT INTO `tbl_category` VALUES ('15', '3.1', '14');
ตัวอย่างโค้ด
<?php
// ส่วนของการเชิ่อมต่อกับฐานข้อมูล
mysql_connect("localhost","root","test") or die("Cannot connect the Server");
mysql_select_db("test") or die("Cannot select database");
mysql_query("set character set utf8");
?>
<?php
function mk_array($parentIndex){ // ฟังก์ชันสำหรับสร้าง array จากฐานข้อมูล
global $arr_name; // กำหนด ตัวแปร global สำหรับนำข้อมูลไปแสดงในรายการ tree
$q="SELECT * FROM tbl_category WHERE category_parent=$parentIndex ";
$qr=mysql_query($q);
while($rs=mysql_fetch_array($qr)){
$arr_name[$rs['category_id']]=$rs['category_name'];
$arr_mk[$rs['category_id']]=mk_array($rs['category_id']);
}
return $arr_mk;
}
function tree_list($tree_array) { // ฟังก์ชันสำหรับสร้าง โครงสร้าง แบบ tree จาก array
global $arr_name; // กำหนด ตัวแปร global
$Output = "<ul>\r\n";
foreach($tree_array as $key => $value) {
$Output.= "<li>";
if (is_array($value)) {
$Output.= $arr_name[$key].tree_list($value);
}else{
$Output.= $arr_name[$key];
}
$Output.= "</li>\r\n";
}
$Output.= "</ul>\r\n";
return $Output;
}
$tree_array=mk_array(0); // สร้างตัวแปร array โดย parent เริ่มต้นเท่ากับ 0
echo tree_list($tree_array); // แสดงรายการ โครงสร้าง แบบ tree
?>
เวอร์ชันปรับปรุง
<?php
// ส่วนของการเชิ่อมต่อกับฐานข้อมูล
mysql_connect("localhost","root","test") or die("Cannot connect the Server");
mysql_select_db("test") or die("Cannot select database");
mysql_query("set character set utf8");
?>
<?php
# เวอร์ชัน ปรับปรุง
$arr_mk = array();
$q="SELECT * FROM tbl_category ";
$qr=mysql_query($q);
while($rs=mysql_fetch_array($qr)){
$arr_mk[$rs['category_parent']][$rs['category_id']]=$rs['category_name'];
}
function tree_list($tree_array,$index) {
$Output = "";
if(count($tree_array[$index])){
$Output .= "<ul>\r\n";
foreach($tree_array[$index] as $key => $value) {
$Output .= "<li>".$value;
$Output .= tree_list($tree_array, $key);
$Output .= "</li>\r\n";
}
$Output .= "</ul>\r\n";
}
return $Output;
}
echo tree_list($arr_mk , 0);
?>
บทความคนเข้าอ่านวันนี้
07 Sep 10 ใช้ ckeditor กับ filemanager ด้วย php รองรับ ฟังก์ชัน javascript อ่าน 4036 29 Oct 08 สร้างปุ่มแบ่งหน้าให้ดูดีด้วย css อย่างง่าย อ่าน 7118 09 Oct 10 สร้าง album และ อัพโหลด รูป photo ขึ้น facebook ด้วย php sdk อ่าน 4803 25 Sep 08 การกำหนด selectors ด้วย jQuery แบบลำดับขั้น ตอนที่ 2 อ่าน 3543 21 Aug 10 เริ่มใช้ และ ประยุกต์ CKEditor ให้ใช้งานง่าย เต็มความสามารถ อ่าน 4403 07 Dec 09 การเลื่อน scrollbar อัตโนมัติตาม การเลื่อนขึ้นลง ของ mouse ด้วย jQuery อ่าน 3416 25 Sep 08 แบ่งหน้า ด้วย Code แบบง่าย อ่าน 6486 05 Jul 09 สร้างฟังก์ชัน autocomplete ให้ใช้งานแบบง่าย ด้วย ajax อ่าน 15300 08 Nov 09 เทคนิค CSS แสดงข้อมูลแบ่งเป็น คอลัมน์ แทนการใช้ตาราง Table อ่าน 8791 25 Sep 08 รู้จักฟังก์ชันสำหรับการ random อ่าน 2902 23 Jun 11 การสร้าง active เมนู อย่างง่าย ด้วย css และ php อ่าน 2953 21 Oct 08 php กับการแสดงวันที่เป็นภาษาไทย อ่าน 11586 18 Oct 08 การประยุกต์ใช้ฟังก์ขัน after() กับ text input อ่าน 4923 21 Jul 10 เทคนิค การเพิ่ม ลบ แถว ในตาราง รายการข้อมูล ด้วย jQuery อย่างง่าย อ่าน 5945 26 Sep 10 การแสดงข้อมูล แนะนำ เส้นทาง ใน google map อ่าน 3354 02 Dec 10 แทรก emoticon ด้วย javascript ฟังก์ชัน ให้กับ ckeditor อ่าน 2837 25 Sep 08 หาตำแหน่งของ element แนวแกน x แกน y ด้วยฟังก์ชันของ jQuery อ่าน 2847 25 Sep 08 ไม่ให้ทำการ คัดลอก ( Copy ) และ วาง ( Paste ) อ่าน 2775 25 Sep 08 javasdcript กับการเข้ารหัส encoding และการถอดรหัส decoding อ่าน 4243 21 Jan 11 การใช้งาน Meta characters ใน Regular Expressions ของ PHP อ่าน 1540
