Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie menu z bazy
Forum PHP.pl > Forum > PHP
Hudini5
Witam,

Problem polega na wygenerowaniu menu z bazy SQL. Może od razu przedstawię kod będzie łatwiej wytłumaczyć.



  1. <?php include('mysql_connect.php'); //ŁĄCZE Z BAZĄ DANYCH ?>
  2. <script type="text/javascript" src="simpletreemenu.js"></script>
  3. <link rel="stylesheet" type="text/css" href="simpletree.css" />
  4. </head>
  5.  
  6.  
  7. <!-- ////////////////////////////////////// DODAWANIE NOWEJ KATEGORII //////////////////////////////////////////////////////////////// -->
  8.  
  9.  
  10. <form action="index.php" method="post">
  11. Nazwa kategorii: <input type="text" name="kategoria" />
  12. <input type="submit" name="add_kat" value="dodaj" />
  13. </form>
  14.  
  15. <?php
  16. if(isset($_POST[add_kat]) && strlen($_POST[kategoria]) > 0){ //SPRAWDZAM CZY FORMULARZ ZOSTAŁ WYSŁANY JESLI TAK DODAJE KATEGORIE
  17. $query = "SELECT nazwa FROM menu WHERE nazwa='$_POST[kategoria]'";
  18. $result = mysql_query($query);
  19.  
  20. if(mysql_num_rows($result) == 0){ //SPRAWDZAM CZY PODANA KATEGORIA JUZ ISNIEJE JEŻELI NIE DODAJE DO BAZY
  21. $query = "INSERT INTO menu (id_parent, nazwa, tresc) VALUES ('0', '$_POST[kategoria]', '0')";
  22. $result = mysql_query($query);
  23. if($result){
  24. echo "Dodano kategorie \"$_POST[kategoria]\"";
  25. } else {
  26. echo "Kategoria nie została dodana. Proszę sprubować ponownie później";
  27. }
  28. } else {
  29. echo "Kategoria nie została dodana ponieważ istnieje już taka nazwa kategorii.";
  30. }
  31.  
  32.  
  33. }
  34. ?>
  35. <hr />
  36.  
  37.  
  38. <!-- ////////////////////////////////////// DODAWANIE NOWEJ PODKATEGORII //////////////////////////////////////////////////////////////// -->
  39. <?php $query = "SELECT id, nazwa FROM menu WHERE id_parent='0'"; //TWORZE LISTE ROZWIJANA KATEGORII
  40. $result = mysql_query($query);
  41. while($row = mysql_fetch_array($result, MYSQL_NUM)){
  42. $kategorie .= "<option name=\"kategoria\" value=\"$row[0]\">$row[1]</option> \n";
  43. }
  44. ?>
  45.  
  46. <form action="index.php" method="post">
  47. Nazwa podkategorii: <input type="text" name="podkategoria" />
  48. Kategoria:
  49. <select name="kategoria">
  50. <?php echo $kategorie; ?>
  51. <input type="submit" name="add_podkat" value="dodaj" />
  52. </form>
  53.  
  54. <?php
  55. if(isset($_POST[add_podkat]) && strlen($_POST[podkategoria]) > 0){ //SPRAWDZAM CZY FORMULARZ ZOSTAŁ WYSŁANY JESLI TAK DODAJE PODKATEGORIE
  56. $query = "SELECT nazwa FROM menu WHERE nazwa='$_POST[podkategoria]' AND id_parent!='0'";
  57. $result = mysql_query($query);
  58.  
  59. if(mysql_num_rows($result) == 0){ //SPRAWDZAM CZY PODANA PODKATEGORIA JUZ ISNIEJE JEŻELI NIE DODAJE DO BAZY
  60. $query = "INSERT INTO menu (id_parent, nazwa, tresc) VALUES ('$_POST[kategoria]', '$_POST[podkategoria]', '0')";
  61. $result = mysql_query($query);
  62. if($result){
  63. echo "Dodano podkategorie \"$_POST[podkategoria]\"";
  64. } else {
  65. echo "Kategoria nie została dodana. Proszę sprubować ponownie później";
  66. }
  67. } else {
  68. echo "Podkategoria nie została dodana ponieważ istnieje już taka nazwa podkategorii.";
  69. }
  70.  
  71.  
  72. }
  73. ?>
  74. <hr />
  75.  
  76.  
  77.  
  78. <!-- ////////////////////////////////////// DODAWANIE LINKA DO PODKATEGORII //////////////////////////////////////////////////////////////// -->
  79. <?php $query = "SELECT * FROM menu WHERE id_parent!='0' AND tresc='0'"; //TWORZE LISTE ROZWIJANA PODKATEGORII
  80. $result = mysql_query($query);
  81. while($row = mysql_fetch_array($result, MYSQL_NUM)){
  82. $podkategorie .= "<option name=\"podkategoria\" value=\"$row[0]\">$row[2]</option> \n";
  83. }
  84. ?>
  85.  
  86. <form action="index.php" method="post">
  87. Nazwa Podstrony(Wyświetlana w menu): <input type="text" name="link" />
  88. Podkategoria:
  89. <select name="podkategoria">
  90. <?php echo $podkategorie; ?>
  91. <input type="submit" name="add_link" value="dodaj" />
  92. </form>
  93.  
  94. <?php
  95. if(isset($_POST[add_link]) && strlen($_POST[link])){ //SPRAWDZAM CZY FORMULARZ ZOSTAŁ WYSŁANY JESLI TAK DODAJE LINK(STRONE)
  96. $query = "INSERT INTO menu (id_parent, nazwa, tresc) VALUES ('$_POST[podkategoria]', '$_POST[link]', 'Tresc podstrony $_POST[link]')";
  97. $result = mysql_query($query);
  98. if($result){
  99. echo "Dodano Strone o nazwie: \"$_POST[link]\"";
  100. } else {
  101. echo "Link nie został dodan. Proszę sprubować ponownie później";
  102. }
  103. }
  104.  
  105. ?>
  106. <hr />
  107.  
  108. <!-- ////////////////////////////////////// GENEROWANIE MENU //////////////////////////////////////////////////////////////// -->
  109. <?php
  110. $query = "SELECT * FROM menu";
  111. $result = mysql_query($query);
  112. while($row = mysql_fetch_array($result, MYSQL_NUM)){ // WYSWIETLAM KATEGORIE
  113.  
  114. if($row[1] == 0){
  115. echo "$row[2]<br />\n";
  116. $query2 = "SELECT id, nazwa FROM menu WHERE id_parent='$row[0]'";
  117. $result2 = mysql_query($query2);
  118. while($row2 = mysql_fetch_array($result2, MYSQL_NUM)){ // WYSWIETLAM PODKATEGORIE
  119. echo "--$row2[1]<br />\n";
  120. if($row2[0] != 0){
  121. $query3 = "SELECT id, nazwa FROM menu WHERE id_parent='$row2[0]'";
  122. $result3 = mysql_query($query3);
  123. while($row3 = mysql_fetch_array($result3, MYSQL_NUM)){ // WYSWIETLAM LINKI
  124. echo "----$row3[1]<br />\n";
  125. }
  126. }
  127. }
  128. echo "<br />";
  129. }
  130.  
  131. }
  132.  
  133. ?>
  134. <!-- ////////////////////////////////////// STRUKTURA MENU //////////////////////////////////////////////////////////////// -->
  135.  
  136. <ul id="treemenu1" class="treeview">
  137.  
  138. <li>Kategoria
  139. <ul>
  140. <li>
  141. <li>Podkategoria
  142. <ul>
  143. <li>Link</li>
  144. </ul>
  145. </li>
  146. </li>
  147. </ul>
  148. </li>
  149.  
  150. </ul>
  151.  
  152. <script type="text/javascript">
  153. //ddtreemenu.createTree(treeid, enablepersist, opt_persist_in_days (default is 1))
  154. ddtreemenu.createTree("treemenu1", true)
  155.  
  156. </body>
  157. </html>


A tutaj:

Strona z plikami do menu

Póki co wyciągam dane w postaci:

Kategoria
--Podkategoria
----Link

a chce to umieścić w tym menu rozwijanym które jest w kodzie pytanie brzmi jak? ;p Bardzo proszę o pomoc wczoraj pytałem jak wyciągnąć te dane. Kiedy już mi się udało myślałem że reszta pójdzie łatwo ale niestety myliłem się. Próbuje od wczoraj.

Aha jeszcze struktura bazy danych:

  1. --
  2. -- Struktura tabeli dla `menu`
  3. --
  4.  
  5. CREATE TABLE `menu` (
  6. `id` mediumint(3) NOT NULL AUTO_INCREMENT,
  7. `id_parent` mediumint(3) NOT NULL DEFAULT '0',
  8. `nazwa` varchar(50) NOT NULL DEFAULT '',
  9. `tresc` text NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) TYPE=MyISAM AUTO_INCREMENT=25 ;
  12.  
  13. --
  14. -- Zrzut danych tabeli `menu`
  15. --
  16.  
  17. INSERT INTO `menu` VALUES (1, 0, 'Ciuchy', '0');
  18. INSERT INTO `menu` VALUES (2, 1, 'Spodnie', '0');
  19. INSERT INTO `menu` VALUES (3, 0, 'samochody', '0');
  20. INSERT INTO `menu` VALUES (4, 1, 'Swetry', '0');
  21. INSERT INTO `menu` VALUES (5, 3, 'sportowe', '0');
  22. INSERT INTO `menu` VALUES (6, 2, 'Krótkie spodnie', 'Tresc podstrony Krótkie spodnie');
  23. INSERT INTO `menu` VALUES (7, 0, 'Żywność', '0');
  24. INSERT INTO `menu` VALUES (8, 2, 'długie spodnie', 'Tresc podstrony długie spodnie');
  25. INSERT INTO `menu` VALUES (11, 4, 'Damskie', 'Tresc podstrony Damskie');
  26. INSERT INTO `menu` VALUES (12, 4, 'Męskie', 'Tresc podstrony Męskie');
  27. INSERT INTO `menu` VALUES (13, 3, 'Terenowe', '0');
  28. INSERT INTO `menu` VALUES (14, 5, 'audi', 'Tresc podstrony audi');
  29. INSERT INTO `menu` VALUES (15, 5, 'wolvo', 'Tresc podstrony wolvo');
  30. INSERT INTO `menu` VALUES (16, 13, 'Landcruser', 'Tresc podstrony Landcruser');
  31. INSERT INTO `menu` VALUES (17, 13, 'Jeep', 'Tresc podstrony Jeep');
  32. INSERT INTO `menu` VALUES (18, 17, 'aaaaa', 'Tresc podstrony aaaaa');
  33. INSERT INTO `menu` VALUES (19, 7, 'Pieczywo', '0');
  34. INSERT INTO `menu` VALUES (20, 19, 'Chleb', 'Tresc podstrony Chleb');
  35. INSERT INTO `menu` VALUES (21, 19, 'Bułki', 'Tresc podstrony Bułki');
  36. INSERT INTO `menu` VALUES (22, 7, 'Owoce', '0');
  37. INSERT INTO `menu` VALUES (23, 22, 'Jabłka', 'Tresc podstrony Jabłka');
  38. INSERT INTO `menu` VALUES (24, 22, 'Pomarańcze', 'Tresc podstrony Pomarańcze');
bigZbig
Poszukaj informacji na temat jak pisać funkcje w PHP oraz o rekurencji. Te dwa zagadnienia to absolutna podstawa, bez której nie zrobisz tego co sobie zamierzyłeś.
erix
G: mysql drzewka
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.