Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: menu w php - PROBLEM Z PTLAMI
Forum PHP.pl > Forum > Przedszkole
weepon
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. ?>
piotru
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.
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.