จะหาวิธี loop ข้อมูลที่มันมี sub ซ้อนๆกันมากๆ จากลึกสุดออกมานอกสุดได้ยังไงครับ?
นี่คือฐานข้อมูล ตารางที่เกี่ยวข้อง และข้อมูลในนั้น
Code
CREATE TABLE IF NOT EXISTS `agni_forums` (
`forum_id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL DEFAULT '0',
`account_id` int(11) DEFAULT NULL COMMENT 'id of forum creator. refer to accounts.account_id',
`forum_name` varchar(255) DEFAULT NULL,
`forum_description` text,
`forum_allow_post` int(1) NOT NULL DEFAULT '1' COMMENT 'allow post new topic in this forum level? 0=no, 1=yes',
`forum_topics` bigint(20) NOT NULL DEFAULT '0' COMMENT 'total topics',
`forum_posts` bigint(20) NOT NULL DEFAULT '0' COMMENT 'total posts(topic+reply)',
`forum_last_post_id` int(11) DEFAULT NULL,
`forum_create` bigint(20) DEFAULT NULL,
`forum_create_gmt` bigint(20) DEFAULT NULL,
`forum_update` bigint(20) DEFAULT NULL,
`forum_update_gmt` bigint(20) DEFAULT NULL,
`forum_order` int(9) NOT NULL DEFAULT '1',
`forum_status` int(1) NOT NULL DEFAULT '0' COMMENT '0=disable+hidden, 1=enable, 2=lock',
`nlevel` int(10) NOT NULL DEFAULT '1',
PRIMARY KEY (`forum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;
--
-- Dumping data for table `agni_forums`
--
INSERT INTO `agni_forums` (`forum_id`, `parent_id`, `account_id`, `forum_name`, `forum_description`, `forum_allow_post`, `forum_topics`, `forum_posts`, `forum_last_post_id`, `forum_create`, `forum_create_gmt`, `forum_update`, `forum_update_gmt`, `forum_order`, `forum_status`, `nlevel`) VALUES
(1, 0, 1, 'test 1', '<p>test <strong>forum <span style="font-size: medium;">1</span></strong></p>', 0, 0, 0, NULL, 1344357485, 1344332285, 1344357485, 1344332285, 1, 1, 1),
(2, 0, 1, 'test 2', '<p>test <strong>forum <span style="font-size: medium; color: #ff6600;">2</span></strong></p>', 0, 0, 0, NULL, 1344357520, 1344332320, 1344357520, 1344332320, 6, 2, 1),
(3, 1, 1, 'test 1.1', '<p>create sub forum of test 1</p>', 1, 0, 0, NULL, 1344436504, 1344411304, 1344436504, 1344411304, 2, 0, 2),
(4, 3, 1, 'test 1.1.1', '<p>create sub forum of test 1.1</p>', 1, 0, 0, NULL, 1344439253, 1344414053, 1344440385, 1344415185, 3, 1, 3);
จากข่อมูลในตารางนี้ ฟอรั่มที่ลึกสุดจะอยู่ที่ test 1.1.1 แล้วค่อยออกมา test 1.1 และออกมา test 1 และลำดับเดียวกับ test 1 คือ test 2
วนไล่ลำดับจากลึกสุดออกมานอกสุดนะครับ order by ไม่เกี่ยง
ต้องทำแบบนี้เพราะต้องการกระบวนการนับข้อมูล topics และ posts เพื่ออัพเดทจำนวนจากลึกสุดออกมาเรื่อยๆ หรือมีวิธีใดง่ายกว่า?Tag : PHP
Date :
2012-08-09 22:38:48
By :
mr.v
View :
1140
Reply :
4
สงสัยจะได้แล้วมั่งครับคุณ v
Date :
2012-08-16 17:31:17
By :
mr.win
ยังไม่ได้เลยครับ หมดปัญญาจริงๆ ตอนนี้ใช้วิธีให้คลิกทีละฟอรั่มอยู่ แล้วต้องทำจากลึกสุดออกมานอกสุดด้วย ไม่งั้นมันไม่ตรง เหนื่อยสุดๆ พวกกระบวนการทำงานซ้อนๆกันเนี่ย
Date :
2012-08-16 19:20:23
By :
mr.v
Load balance : Server 05