· 10 years ago · Sep 10, 2016, 09:16 AM
1<?php
2/*************************
3// GENERATED NESTED LIST
4// created by : Cahya DSN
5// created date : 2012-09-14
6// updated date : 2013-04-04
7**************************
8USE `test`;
9
10DROP TABLE IF EXISTS `project`;
11CREATE TABLE IF NOT EXISTS `project` (
12 `id_task` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key untuk table project',
13 `id_parenttask` int(11) unsigned NOT NULL DEFAULT 0,
14 `task_name` varchar(30) NOT NULL COMMENT 'nama task',
15 `task_desc` text COMMENT 'deskripsi task',
16 `status` tinyint(4) unsigned NOT NULL DEFAULT 0,
17 PRIMARY KEY(`id_task`)
18) ENGINE=MyISAM COMMENT='tabel untuk menyimpan data project';
19
20INSERT INTO `project`(`id_task`,`id_parenttask`,`task_name`,`task_desc`,`status`) VALUES
21(NULL,0,'Kategori 1','',0),
22(NULL,1,'Kategori 1.1','',0),
23(NULL,1,'Kategori 1.2','',0),
24(NULL,3,'Kategori 1.2.1','',0),
25(NULL,0,'Kategori 2','',0),
26(NULL,0,'Kategori 3','',0),
27(NULL,6,'Kategori 3.1','',0),
28(NULL,6,'Kategori 3.2','',0),
29(NULL,3,'Kategori 1.2.2','',0),
30(NULL,6,'Kategori 3.3','',0);
31*/
32function GenerateDataArray($arr, $parent = 0)
33{
34 $pages = Array();
35 foreach($arr as $page)
36 {
37 if($page['id_parenttask'] == $parent)
38 {
39 $page['sub'] = isset($page['sub']) ? $page['sub'] : GenerateDataArray($arr, $page['id_task']);
40 $pages[] = $page;
41 }
42 }
43 return $pages;
44}
45
46// loop the multidimensional array recursively to generate the HTML
47function GenerateDataHTML($nav)
48{
49 $html = '';
50 foreach($nav as $page)
51 {
52 $html .= "<ul>\n<li>\n";
53 $html .= '<a href="' . $page['id_task'] . '">' . $page['task_name'] . '</a>';
54 $html .= GenerateDataHTML($page['sub']);
55 $html .= "</li>\n</ul>\n";
56 }
57 return $html;
58}
59//database configuration
60$dbhost='localhost';
61$dbuser='root';
62$dbpass='';
63$dbname='test';
64//database connection
65$db=new mysqli($dbhost,$dbuser,$dbpass,$dbname);
66//query to get project datas from database
67$sql="SELECT * FROM project";
68$data=array();
69$result=$db->query($sql);
70while($records=$result->fetch_assoc()){
71 $data[]=$records;
72}
73$result->close();
74$db->close();
75/* DUMMY DATA FOR TEST
76//======================
77$data=array(
78array('id_task'=>1,'task_name'=>'Kategori 1','id_parenttask'=>0),
79array('id_task'=>2,'task_name'=>'Kategori 1.1','id_parenttask'=>1),
80array('id_task'=>3,'task_name'=>'Kategori 1.2','id_parenttask'=>1),
81array('id_task'=>4,'task_name'=>'Kategori 1.2.1','id_parenttask'=>3),
82array('id_task'=>5,'task_name'=>'Kategori 2','id_parenttask'=>0),
83array('id_task'=>6,'task_name'=>'Kategori 3','id_parenttask'=>0),
84array('id_task'=>7,'task_name'=>'Kategori 3.1','id_parenttask'=>6),
85array('id_task'=>8,'task_name'=>'Kategori 3.2','id_parenttask'=>6)
86);
87*/
88
89$dataarray = GenerateDataArray($data);
90echo GenerateDataHTML($dataarray);