PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ดึงข้อมูล จากฐานข้อมูล สร้าง รายการเครือข่าย แบบ tree ด้วย php

18 September 2010 By


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

 


Tags:: ระบบเครื่อข่าย php tree





URL สำหรับอ้างอิง