พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / การทำ Recursive แบบ MLM คับ
madensri
madensri
Wed 14 Mar 2007 17:48:11
คือผมค้นหาจากกระทู้เก่าๆในนี้ดูแล้วลองเอามาทดสอบดูแล้วผลลัพธ์ก็ OK ครับ (ขอบคุณ คุณRujZ ครับ)
=========== test.php ============
<?php

$Cust_No = "001";

mysql_connect("localhost", "root", "1234");
mysql_select_db("genealogy");
mysql_query("SET NAMES 'tis620';");

function render($parent, $level)
{
$result = mysql_query("SELECT * FROM `customer` WHERE `ImmediateSuperior` = $parent ORDER BY `Cust_No` ASC");
while($row = mysql_fetch_array($result))
{
for($i=0; $i<$level; $i++)
{
echo "==>";
}
echo "{$row['Cust_Name']}<br/>";
render($row['Cust_No'], $level + 1); // ค้นหาสายของตัวเอง โดนบวก level ไป 1
}
}

render($Cust_No, 0); // เริ่มต้นที่ parent = 0 คือระดับสูงสุด และให้ level = 0

mysql_close();

?>
=============================

ไฟล์ที่ 2
=========== genealogy.sql ============
-- ----------------------------
-- Table structure for customer
-- ----------------------------
CREATE TABLE `customer` (
`Cust_No` varchar(10) NOT NULL,
`Cust_Name` varchar(100) default NULL,
`ImmediateSuperior` varchar(10) default NULL,
`ImmediateSuperior_Team` varchar(10) default NULL,
`ImmediateSuperior_Team_Line` varchar(10) default NULL,
`Email` varchar(40) default NULL,
`MobilePhone` varchar(15) default NULL,
`PVRate` int(11) default NULL,
`DownLine_Left` varchar(10) default NULL,
`DownLine_Right` varchar(10) default NULL,
PRIMARY KEY (`Cust_No`),
KEY `i_ImmediateSuperior` (`ImmediateSuperior`),
KEY `i_ImmediateSuperior_Team` (`ImmediateSuperior_Team`),
KEY `i_ImmediateSuperior_Team_Line` (`ImmediateSuperior_Team_Line`),
KEY `i_DownLine_Left` (`DownLine_Left`),
KEY `i_DownLine_Right` (`DownLine_Right`),
KEY `i_Cust_Name` (`Cust_Name`),
KEY `i_PVRate` (`PVRate`)
) ENGINE=MyISAM DEFAULT CHARSET=tis620 COMMENT='ข้อมูลลูกค้า(Master)';

-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `customer` VALUES ('001', 'เด่น', null, null, null, '
madensri@hotmail.com', '081-2797521', '1000', '002', '003');
INSERT INTO `customer` VALUES ('002', 'ใจ', '001', '001', 'L', '
jai@hotmail.com', '084-6447064', '900', '004', '005');
INSERT INTO `customer` VALUES ('003', 'ครีม', '001', '001', 'R', '
cream@hotmail.com', '084-12345678', '800', '006', '007');
INSERT INTO `customer` VALUES ('004', 'เคน', '001', '002', 'L', '
ken@hotmail.com', '081-78945612', '700', '008', '009');
INSERT INTO `customer` VALUES ('005', 'ปู', '001', '002', 'R', '
poo@hotmail.com', '082-23546895', '600', null, null);
INSERT INTO `customer` VALUES ('006', 'เปา', '002', '003', 'L', '
pao@hotmail.com', '083-12356485', '500', '010', null);
INSERT INTO `customer` VALUES ('007', 'ไก่', '003', '003', 'R', '
kai@hotmail.com', '084-12354865', '400', null, null);
INSERT INTO `customer` VALUES ('008', 'มด', '003', '004', 'L', '
mod@hotmail.com', '085-15255225', '300', null, null);
INSERT INTO `customer` VALUES ('009', 'ดิว', '005', '004', 'R', '
dew@hotmail.com', '086-25468542', '200', null, null);
INSERT INTO `customer` VALUES ('010', 'เงี่ยม', '007', '006', 'L', '
keam@hotmail.com', '087-25535411', '100', null, null);
===============================

ผลลัพธ์ก็ออกมาตามปกติครับคือ
============================
ใจ
==>เปา
ครีม
==>ไก่
==>==>เงี่ยม
==>มด
เคน
ปู
==>ดิว
=============================

คำถามน่ะครับ หากผมอยากให้มันแสดงผลออกมาแบบนี้
=============================
Level:1
ใจ
ครีม
เคน
ปู
Level:2
เปา
ไก่
มด
ดิว
Level:3
เงี่ยม
=============================
คือให้มันแบ่งออกเป็น Level นั้นเองครับ ผมพยายามลองมาครึ่งวัน มันเพี้ยนอ่ะคับพอจะมีแนวทางไหมครับผมที่จะให้แสดงผลตามต้องการครับ

ขอบคุณครับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login