ตัวอย่าง วิธีการเขียนโค้ด ต่อไปนี้ เป็นแนวทางสำหรับสร้าง รายการแบบ 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); ?>