Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> menu w php - PROBLEM Z PTLAMI
weepon
post 12.11.2005, 17:20:31
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.06.2005

Ostrzeżenie: (0%)
-----


Witam
Kto mi pomoze przerobić kod ?
Problem polega na tym że zapętliłem żle kod, ale nie wim jak inaczej sobie z tym poradzić, otóż ma to być menu które pobiera sobie z bazy danych z tabeli CATEGORIES główne kategorie, i z tabeli SUBCATEGORIES podkategorie. w tabeli subcategories są powiazania do categories.

W czym problem ?
Chodzi teraz o to, że w kodzie który jest pod spodem wyświetla się tak:
jeżeli klikne w kategorię 1 to w pozostałych kategoriach wyświetlają mi się tez te same podkategorie, a nie powinny w ogóle, natomiast jeżeli kliknę w KATEGORI 2 to wyświtlają się we wszystkich kategoriach pokategorie które powinny wyświetlać się tylko w kat 2.

mam nadzieje ze nie namieszałem za bardzo.
Ma ktoś pomysł jak to rozwiązać ?


- KATEGORIA 1
- PODKATEGORIA 1
- PODKATEGORIA 2
- KATEGORIA 2
- PODKATEGORIA 1
- PODKATEGORIA 2
- KATEGORIA 3
- PODKATEGORIA 1
- PODKATEGORIA 2


  1. <?php
  2.  
  3. $query = "SELECT cat_name, cat_id FROM categories WHERE cat_status=1";
  4. $result = mysql_query($query);
  5.  
  6. while ($row = mysql_fetch_array($result)){
  7. $cat_id = $row[cat_id];
  8.  
  9. extract($row); // wydobycie wszystkich zmiennych z tablicy
  10. echo "<tr>";
  11. echo "<td class='categories'>";
  12. echo "+ "; 
  13. echo "<a href=index.php?cat_id=".$cat_id.">";
  14. echo $cat_name . "</a><br>";
  15.  
  16. $query1 = "SELECT subcategories.subcat_name, subcategories.subcat_id
  17. FROM subcategories, categories WHERE subcategories.subcat_status = 1 
  18. AND subcategories.cat_id = categories.cat_id AND categories.cat_id = '".$_GET['cat_id']."'";
  19. $result1 = mysql_query($query1);
  20. while ($row1 = mysql_fetch_array($result1)){
  21. $subcat_id = $row1[subcat_id];
  22. extract($row1);
  23. echo "&nbsp;&nbsp;&nbsp;&nbsp;- <a href=index.php?cat_id=".$cat_id."&subcat_id=".$subcat_id.">" . $subcat_name . "</a><br>";
  24.  
  25. }
  26.  
  27. echo "</td>";
  28. echo "</tr>";
  29. }
  30.  
  31. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
piotru
post 12.11.2005, 19:28:42
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 23.04.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Zrobiłbym kategorie i podkategorie w jednej tabeli.
W systemie jaki teraz piszę mam taką tabelę:
id | parent_id | name |

i teraz funkcja rekurencyjna wyciaga kategorie o danym id (gdy parent =0 znaczy że kat. głowna itd.) i dla niej wszystkie podkategorie i tak dalej . Plus jest też taki że możesz prosto robić zagłębienia kategorii.

Masz tu kod prawie żywcem wyjęty z mojego CMSa więc musisz sobie zmienić odwołania do bazy ale zasada jest własnie taka jak napisałem.
  1. <?php
  2.  
  3. function get_category($id,$level=1){
  4.  
  5.  
  6. $db = &db::get_instance();
  7. $query=sprintf("SELECT * FROM %1$s WHERE category_parent_id=%2$d",TABLE_CATEGORY,$id);
  8. $result=$db->db_query($query);
  9. if($db->db_num_rows()>0){
  10. $result=$db->db_fetch();
  11. foreach($result as $row){
  12. $space=str_repeat('&nbsp; ', $level);
  13.  
  14. echo$space.$row['category_name']."<br>";
  15.  
  16.  
  17. $this->get_category($row['category_id'],$level+2);
  18. }
  19. }
  20.  
  21. }
  22.  
  23. ?>

wywołujesz:
  1. <?php
  2. get_category(0);
  3. ?>

i to daje si wszystkie kategorie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:24