Hallo,
Ik heb een recursieve functie die een menu opbouwt...
Dit werkt lokaal prima, maar op mijn www-webserver niet, beide PHP5.
Heb de 2 functies hier beneden herschreven, de 1e deed alles met veel omwegen, dacht dat het daar aan lag, maar deze werkt dus ook niet, terwijl dit toch wel een 'nette' code is om mijn menu op te bouwen?
Kan het te maken hebben dat ik lokaal MySQL5 en extern MySQL4 gebruik?
Hier de code en de MySQL tabel, misschien dat iemand het zelf wil proberen en/of mijn fout ziet, kijk misschien ergens overheen:
De MySQL tabel:
Hij geeft alleen de hoofdcategorieen weer, dus geen subcategorieeen, verder geen errors.
Bij voorbaat veel dank,
Ik heb een recursieve functie die een menu opbouwt...
Dit werkt lokaal prima, maar op mijn www-webserver niet, beide PHP5.
Heb de 2 functies hier beneden herschreven, de 1e deed alles met veel omwegen, dacht dat het daar aan lag, maar deze werkt dus ook niet, terwijl dit toch wel een 'nette' code is om mijn menu op te bouwen?
Kan het te maken hebben dat ik lokaal MySQL5 en extern MySQL4 gebruik?
Hier de code en de MySQL tabel, misschien dat iemand het zelf wil proberen en/of mijn fout ziet, kijk misschien ergens overheen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| function GetMainCat($level = 0) { global $MySQL; $sql = $MySQL->Query("SELECT id, name FROM menu WHERE id > " . $level . " AND parent_id = id ORDER BY id ASC LIMIT 1"); if (!$sql) { trigger_error("MySQL Error", E_USER_ERROR); exit; } if ($MySQL->GetRecordCount($sql) == 0) { return true; } $result = $MySQL->GetResult($sql); echo "<br><br>" . $result['name'] . "<hr>"; GetSubCat($result['id']); // Haal de volgende hoofdcategorie op... GetMainCat($result['id']); return true; } function GetSubCat($parent_id, $level = 0) { global $MySQL; $sql = $MySQL->Query("SELECT id, name FROM menu WHERE parent_id = " . $parent_id . " AND NOT parent_id = id"); if ($MySQL->GetRecordCount($sql) == 0) { return true; } $i = 0; while ($result = $MySQL->GetResult($sql)) { $struct = ""; while ($i <= $level) { $struct .= " - "; $i++; } echo $struct . $result['name'] . "(" . $result['id'] . "|" . $level . ")<br>"; $i = 0; GetSubCat($result['id'], ($level + 1)); } return true; } GetMainCat(); ?> |
De MySQL tabel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| CREATE TABLE `menu` ( `id` int(11) NOT NULL auto_increment, `parent_id` int(11) NOT NULL default '0', `name` varchar(50) NOT NULL default '', UNIQUE KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ; -- -- Gegevens worden uitgevoerd voor tabel `menu` -- INSERT INTO `menu` VALUES (22, 22, 'Hoofdmenu 1'); INSERT INTO `menu` VALUES (23, 22, 'Subcategorie 1'); INSERT INTO `menu` VALUES (24, 22, 'Subcategorie 2'); INSERT INTO `menu` VALUES (25, 23, 'Sub-subcategorie 1'); INSERT INTO `menu` VALUES (26, 24, 'Sub-subcategorie 1'); INSERT INTO `menu` VALUES (27, 23, 'Sub-subcategorie 2'); INSERT INTO `menu` VALUES (28, 23, 'Sub-subcategorie 3'); INSERT INTO `menu` VALUES (29, 26, 'Sub'); INSERT INTO `menu` VALUES (30, 29, 'Nog een sub'); INSERT INTO `menu` VALUES (31, 30, 'en nog een'); |
Hij geeft alleen de hoofdcategorieen weer, dus geen subcategorieeen, verder geen errors.
Bij voorbaat veel dank,
[ Voor 4% gewijzigd door Keess op 12-12-2007 11:29 ]