· 8 years ago · Feb 11, 2018, 01:02 PM
1CREATE TABLE IF NOT EXISTS `kategori` (
2`id_kategori` int(11) NOT NULL AUTO_INCREMENT,
3`kategori` varchar(100) NOT NULL,
4`id_parent` int(11) DEFAULT NULL,
5PRIMARY KEY (`id_kategori`)
6) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
7
8INSERT INTO `kategori` (`id_kategori`, `kategori`, `id_parent`) VALUES
9(1, 'Topi', NULL),
10(2, 'Baju', NULL),
11(3, 'Celana', NULL),
12(4, 'Sepatu', NULL),
13(5, 'Kupluk', 1),
14(6, 'Topi anak reggae', 1),
15(7, 'Topi anak gaul', 1),
16(8, 'Topi kuping binatang', 1),
17(9, 'Topi besi', 1),
18(10, 'Cutbray', 3),
19(11, 'Pensil', 3),
20(12, 'Separo', 3),
21(13, 'Cangcut', 3),
22(14, 'Mickey Mouse', 8),
23(15, 'Kucing Kampung', 8),
24(16, 'Doraemon', 8);
25
26
27<?php
28
29
30mysql_connect('localhost', 'root', '');
31
32mysql_select_db('kategori_dinamis');
33
34
35
36function punya_child($id_kategori = NULL)
37
38{
39
40 $result = mysql_query('SELECT COUNT(id_kategori) AS jumlah_child FROM kategori WHERE id_parent = \''.$id_kategori.'\'');
41
42 $data = mysql_fetch_assoc($result);
43
44
45
46 if($data['jumlah_child'] > 0) return TRUE;
47
48
49
50 return FALSE;
51
52}
53
54
55
56function hirarki($id_kategori = NULL)
57
58{
59
60 if($id_kategori == NULL)
61
62 {
63
64 $result_top_level = mysql_query('SELECT * FROM kategori WHERE id_parent IS NULL');
65
66
67
68 if(mysql_num_rows($result_top_level) > 0)
69
70 {
71
72 echo '<ul>';
73
74
75
76 while($row_top_level = mysql_fetch_assoc($result_top_level))
77
78 {
79
80 echo '<li>', $row_top_level['kategori'];
81
82
83
84 if(punya_child($row_top_level['id_kategori']))
85
86 {
87
88 hirarki($row_top_level['id_kategori']);
89
90 }
91
92
93
94 echo '</li>';
95
96 }
97
98
99
100 echo '</ul>';
101
102 }
103
104 }
105
106 else
107
108 {
109
110 $result_child = mysql_query('SELECT * FROM kategori WHERE id_parent = \''.$id_kategori.'\'');
111
112
113
114 if(mysql_num_rows($result_child) > 0)
115
116 {
117
118 echo '<ul>';
119
120
121
122 while($row_child = mysql_fetch_assoc($result_child))
123
124 {
125
126 echo '<li>', $row_child['kategori'];
127
128
129
130 if(punya_child($row_child['id_kategori']))
131
132 {
133
134 hirarki($row_child['id_kategori']);
135
136 }
137
138
139
140 echo '</li>';
141
142 }
143
144
145
146 echo '</ul>';
147
148 }
149
150 }
151
152}
153
154
155
156hirarki();
157
158
159
160mysql_close();
161
162
163?>