Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+mysql] poukładane menu (drzewko) z bazy danych
Forum PHP.pl > Forum > Bazy danych > MySQL
Mati
Witam,

Mam utworzone 2 tabele w bazie danych: categories i categories_description.


Chciałbym z nich wygenerować menu o takiech hierarchi i wygladzie:


1. Ceramika w srebrze
1.1 Wisiory
1.2 Komplety
1.3 Pierścionki
1.4 Bransolety
1.5 Broszki

2. Bransolety
2.1 Damskie
2.1.1 Z kamieniami
2.1.1.1 Bursztyn
2.1.1.2 Cyrkonia
2.1.1.3 Inne
2.1.1.4 Syntetyczne
2.1.2 Bez kamieni
2.2 Męskie
2.3 Na nogę

3. Broszki

4. Kolczyki
4.1 Z kamieniami
4.1.1 Bursztyn
4.1.2 Cyrkonia
4.1.3 Inne
4.1.4 Syntetyczne
4.2 Bez kamieni

5. Łańcuszki
5.1 Damskie
5.2 Męskie

6. Wisiorki
6.1 Z kamieniami
6.1.1 Bursztyn
6.1.2 Cyrkonia
6.1.3 Inne
6.1.4 Syntetyczne
6.2 Bez kamieni

7. Dewocjonalia
7.1 Krzyże
7.2 Medaliki

8. Biżuteria sztuczna







Ponizej podaje strukture tabelek, wraz z wpisanymi pozycjami menu, w categories i categories_description
są już wpisane i poukładane pozycje. Nie potrafie tylko wyciagnac tego z bazy.


categories
  1. CREATE TABLE `categories` (
  2. `categories_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `categories_image` varchar(64) DEFAULT NULL,
  4. `parent_id` int(11) NOT NULL DEFAULT '0',
  5. `sort_order` int(3) DEFAULT NULL,
  6. `date_added` datetime DEFAULT NULL,
  7. `last_modified` datetime DEFAULT NULL,
  8. PRIMARY KEY (`categories_id`),
  9. KEY `idx_categories_parent_id` (`parent_id`)
  10. ) ENGINE=MyISAM AUTO_INCREMENT=60 DEFAULT CHARSET=latin2 AUTO_INCREMENT=60 ;
  11.  
  12.  
  13.  
  14. INSERT INTO `categories` VALUES (22, NULL, 0, 2, '2006-10-25 13:25:12', NULL);
  15. INSERT INTO `categories` VALUES (23, NULL, 0, 3, '2006-10-25 13:30:03', NULL);
  16. INSERT INTO `categories` VALUES (24, 'aaa.gif', 0, 4, '2006-10-25 13:48:49', '2006-10-25 13:49:53');
  17. INSERT INTO `categories` VALUES (35, NULL, 22, 1, '2006-10-26 10:30:24', NULL);
  18. INSERT INTO `categories` VALUES (26, NULL, 0, 5, '2006-10-26 10:23:23', NULL);
  19. INSERT INTO `categories` VALUES (27, NULL, 0, 6, '2006-10-26 10:23:47', NULL);
  20. INSERT INTO `categories` VALUES (28, NULL, 0, 7, '2006-10-26 10:24:16', NULL);
  21. INSERT INTO `categories` VALUES (29, NULL, 0, 8, '2006-10-26 10:24:37', NULL);
  22. INSERT INTO `categories` VALUES (30, NULL, 21, 0, '2006-10-26 10:25:14', '2006-10-26 10:25:39');
  23. INSERT INTO `categories` VALUES (31, NULL, 21, 2, '2006-10-26 10:25:48', NULL);
  24. INSERT INTO `categories` VALUES (32, NULL, 21, 3, '2006-10-26 10:26:04', NULL);
  25. INSERT INTO `categories` VALUES (33, NULL, 21, 4, '2006-10-26 10:28:10', NULL);
  26. INSERT INTO `categories` VALUES (34, NULL, 21, 5, '2006-10-26 10:28:21', NULL);
  27. INSERT INTO `categories` VALUES (36, NULL, 22, 2, '2006-10-26 10:30:31', NULL);
  28. INSERT INTO `categories` VALUES (37, NULL, 22, 3, '2006-10-26 10:30:39', NULL);
  29. INSERT INTO `categories` VALUES (38, NULL, 35, 1, '2006-10-26 10:31:21', NULL);
  30. INSERT INTO `categories` VALUES (39, NULL, 35, 2, '2006-10-26 10:31:30', NULL);
  31. INSERT INTO `categories` VALUES (40, NULL, 38, 1, '2006-10-26 10:32:07', NULL);
  32. INSERT INTO `categories` VALUES (41, NULL, 38, 2, '2006-10-26 10:32:14', NULL);
  33. INSERT INTO `categories` VALUES (42, NULL, 38, 3, '2006-10-26 10:32:23', NULL);
  34. INSERT INTO `categories` VALUES (43, NULL, 38, 4, '2006-10-26 10:32:32', NULL);
  35. INSERT INTO `categories` VALUES (44, NULL, 24, 1, '2006-10-26 10:33:01', NULL);
  36. INSERT INTO `categories` VALUES (45, NULL, 24, 2, '2006-10-26 10:33:46', NULL);
  37. INSERT INTO `categories` VALUES (46, NULL, 44, 1, '2006-10-26 10:34:13', NULL);
  38. INSERT INTO `categories` VALUES (21, NULL, 0, 1, '2006-10-25 13:22:24', NULL);
  39. INSERT INTO `categories` VALUES (47, NULL, 44, 2, '2006-10-26 10:34:20', NULL);
  40. INSERT INTO `categories` VALUES (48, NULL, 44, 3, '2006-10-26 10:34:28', NULL);
  41. INSERT INTO `categories` VALUES (49, NULL, 44, 4, '2006-10-26 10:34:36', NULL);
  42. INSERT INTO `categories` VALUES (50, NULL, 26, 1, '2006-10-26 10:34:57', NULL);
  43. INSERT INTO `categories` VALUES (51, NULL, 26, 2, '2006-10-26 10:35:05', NULL);
  44. INSERT INTO `categories` VALUES (52, NULL, 27, 1, '2006-10-26 10:35:57', NULL);
  45. INSERT INTO `categories` VALUES (53, NULL, 27, 2, '2006-10-26 10:36:05', NULL);
  46. INSERT INTO `categories` VALUES (54, NULL, 52, 1, '2006-10-26 10:36:19', NULL);
  47. INSERT INTO `categories` VALUES (55, NULL, 52, 2, '2006-10-26 10:36:25', NULL);
  48. INSERT INTO `categories` VALUES (56, NULL, 52, 3, '2006-10-26 10:36:36', NULL);
  49. INSERT INTO `categories` VALUES (57, NULL, 52, 4, '2006-10-26 10:36:44', NULL);
  50. INSERT INTO `categories` VALUES (58, NULL, 28, 1, '2006-10-26 10:37:02', NULL);
  51. INSERT INTO `categories` VALUES (59, NULL, 28, 2, '2006-10-26 10:37:09', NULL);


categories_description
  1. CREATE TABLE `categories_description` (
  2. `categories_id` int(11) NOT NULL DEFAULT '0',
  3. `language_id` int(11) NOT NULL DEFAULT '1',
  4. `categories_name` varchar(32) NOT NULL DEFAULT '',
  5. PRIMARY KEY (`categories_id`,`language_id`),
  6. KEY `idx_categories_name` (`categories_name`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
  8.  
  9. --
  10. -- Zrzut danych tabeli `categories_description`
  11. --
  12.  
  13. INSERT INTO `categories_description` VALUES (24, 1, 'Kolczyki');
  14. INSERT INTO `categories_description` VALUES (47, 1, 'Cyrkonia');
  15. INSERT INTO `categories_description` VALUES (53, 1, 'Bez kamieni');
  16. INSERT INTO `categories_description` VALUES (50, 1, 'Damskie');
  17. INSERT INTO `categories_description` VALUES (55, 1, 'Cyrkonia');
  18. INSERT INTO `categories_description` VALUES (45, 1, 'Bez kamieni');
  19. INSERT INTO `categories_description` VALUES (42, 1, 'Inne');
  20. INSERT INTO `categories_description` VALUES (43, 1, 'Syntetyczne');
  21. INSERT INTO `categories_description` VALUES (33, 1, 'Bransolety');
  22. INSERT INTO `categories_description` VALUES (34, 1, 'Broszki');
  23. INSERT INTO `categories_description` VALUES (36, 1, 'Męskie');
  24. INSERT INTO `categories_description` VALUES (37, 1, 'Na nogę');
  25. INSERT INTO `categories_description` VALUES (23, 1, 'Broszki');
  26. INSERT INTO `categories_description` VALUES (46, 1, 'Bursztyn');
  27. INSERT INTO `categories_description` VALUES (52, 1, 'Z kamieniami');
  28. INSERT INTO `categories_description` VALUES (49, 1, 'Syntetyczne');
  29. INSERT INTO `categories_description` VALUES (40, 1, 'Bursztyn');
  30. INSERT INTO `categories_description` VALUES (41, 1, 'Cyrkonia');
  31. INSERT INTO `categories_description` VALUES (29, 1, 'Biżuteria sztuczna');
  32. INSERT INTO `categories_description` VALUES (30, 1, 'Wisiory');
  33. INSERT INTO `categories_description` VALUES (31, 1, 'Komplety');
  34. INSERT INTO `categories_description` VALUES (32, 1, 'Pierścionki');
  35. INSERT INTO `categories_description` VALUES (22, 1, 'Bransolety');
  36. INSERT INTO `categories_description` VALUES (51, 1, 'Męskie');
  37. INSERT INTO `categories_description` VALUES (48, 1, 'Inne');
  38. INSERT INTO `categories_description` VALUES (54, 1, 'Bursztyn');
  39. INSERT INTO `categories_description` VALUES (44, 1, 'Z kamieniami');
  40. INSERT INTO `categories_description` VALUES (38, 1, 'Z kamieniami');
  41. INSERT INTO `categories_description` VALUES (39, 1, 'Bez kamieni');
  42. INSERT INTO `categories_description` VALUES (35, 1, 'Damskie');
  43. INSERT INTO `categories_description` VALUES (26, 1, 'Łańcuszki');
  44. INSERT INTO `categories_description` VALUES (27, 1, 'Wisiorki');
  45. INSERT INTO `categories_description` VALUES (28, 1, 'Dewocjonalia');
  46. INSERT INTO `categories_description` VALUES (21, 1, 'Ceramika w srebrze');
  47. INSERT INTO `categories_description` VALUES (56, 1, 'Inne');
  48. INSERT INTO `categories_description` VALUES (57, 1, 'Syntetyczne');
  49. INSERT INTO `categories_description` VALUES (58, 1, 'Krzyże');
  50. INSERT INTO `categories_description` VALUES (59, 1, 'Medaliki');


Z gory dziekuje za jakas podpowiedz jak to zrobic.

Mi póki co udało się oddzielić podkategorie od kategorii głównych.. ale do niczego dalej dojść nie mogę, choć ciągle probuje.


  1. <?
  2.  
  3. include("connect.php");
  4.  
  5.  
  6. $wynik = mysql_query("Select * from categories");
  7.  
  8. while ($rekord = mysql_fetch_array ($wynik)) {
  9.  
  10.  
  11.  
  12.  
  13. $wynik2 = mysql_query("Select * from categories_description WHERE 
  14.  
  15. categories_id=$rekord[categories_id]");
  16. while ($rekord2 = mysql_fetch_array ($wynik2)) {
  17.  
  18. if($rekord[parent_id]!='0'){
  19. print "-";
  20. }
  21.  
  22. print "$rekord2[categories_name]<br>";
  23.  
  24. }
  25.  
  26.  
  27. }
  28.  
  29. ?>



efekt:

Bransolety
Broszki
Kolczyki
-Damskie
Łańcuszki
Wisiorki
Dewocjonalia
Biżuteria sztuczna
-Wisiory
-Komplety
-Pierścionki
-Bransolety
-Broszki
-Męskie
-Na nogę
-Z kamieniami
-Bez kamieni
-Bursztyn
-Cyrkonia
-Inne
-Syntetyczne
-Z kamieniami
-Bez kamieni
-Bursztyn
Ceramika w srebrze
-Cyrkonia
-Inne
-Syntetyczne
-Damskie
-Męskie
-Z kamieniami
-Bez kamieni
-Bursztyn
-Cyrkonia
-Inne
-Syntetyczne
-Krzyże
-Medaliki
prond
To już było na forum,
przeczytaj sobie ten artykuł : http://arxiv.org/html/cs.DB/0401014
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.