Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/MySQL] Kategorie i podkategorie
Forum PHP.pl > Forum > Przedszkole
tomek55
Chciałbym alby kategorie były wyświetlane w ten sposób:

Kod
Kategoria 1             | Kategoria 2 |                Kategoria 3
Podkategoria 1           podkategoria
Podkategoria 2
Podkategoria 3

Kategoria 4             | Kategoria 5 |
podkategoria


Wyświetlanie kategorii "poziomo" mam już zrobione tylko teraz jak zrobić aby pod kategorią główną wyświetlały sie podkategorie i najlepiej żeby tylko podkategorie pierwszego stopnia smile.gif

Baza danych:

Kod
ID | REF | TITLE_CAT | IMG


Kod wygląda tak:
  1. <?php
  2. $zapytanie=("SELECT * FROM dow_cat WHERE ref='$id'");
  3.  
  4.  $wynik=mysql_query($zapytanie);
  5.  
  6.  echo'<table><tr>';
  7.  
  8. while ($r = mysql_fetch_array ($wynik)) {
  9.  
  10.  $id = $r['id'];
  11.  $ref = $r['ref'];
  12.  $title_cat = $r['title_cat'];
  13.  $img_cat = $r['img'];
  14.  
  15.  
  16. $liczba = mysql_result(mysql_query("SELECT COUNT(cat_id) FROM dow_files WHERE cat_id='$id'"), 0);
  17.  
  18.  
  19. $i++;
  20.  
  21.  
  22.  echo'<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '.$ref.'<img src="'.$img_cat.'" alt="'.$title_cat.'"> <a href="wyswietl.php?id='.$id.'">'.$title_cat.'</a> ('.$liczba.')</td>';
  23.  
  24.  
  25. if($i ==3)
  26. {
  27. echo'</tr>';
  28. echo'<br>';
  29. echo'<tr>';
  30. $i = 0;
  31. }
  32. }
  33. echo'</table>';
  34. ?>


$ref jest to id kategorie do której jest przypisana podkategoria, jeśli $ref=0 jest to "kategoria główna" smile.gif
elem84
Kod pisany na szybko ale mniej więcej tak to powinno wyglądać winksmiley.jpg

  1. <?php
  2.  
  3. $zapytanie=mysql_query("SELECT * FROM tabela_kategori");
  4.  
  5. echo'<table><tr>';
  6.  
  7. for($x=0;$dane=mysql_fetch_assoc($zapytanie);$x++) 
  8. {
  9.  
  10. $zapytanie_tmp=mysql_query("select * from tabela_podkategori where idkategori='$dane[idkategori]'");
  11.  
  12. echo '<td>';
  13. echo '<div>'.$dane['nazwa_kategori'].'</div>';
  14.  
  15. while($dane_tmp=mysql_fetch_assoc($zapytanie_tmp))
  16. {
  17. echo '<div>'.$dane_tmp['nazwa_podkategori'].'</div>';
  18. }
  19.  
  20. echo '</td>';
  21. if($x%3==0&&$x!=0) echo '</tr><tr>';
  22. }
  23.  
  24. echo'</tr></table>';
  25. ?>
tomek55
Ponieważ mam tylko jedną tabelę na kategorie i podkategorie przerobiłem troche kod na taki:

  1. <?php
  2. $zapytanie=mysql_query("SELECT * FROM dow_cat");
  3. echo'<table><tr>';
  4. for($x=0;$dane=mysql_fetch_assoc($zapytanie);$x++)
  5. {
  6.     $zapytanie_tmp=mysql_query("select * from dow_cat where ref='$dane[id]'");
  7.     echo '<td>';
  8.                 echo '<div><b>'.$dane['id'].' <b>'.$dane['ref'].'</b> '.$dane['title_cat'].'</b></div>';
  9.     while($dane_tmp=mysql_fetch_assoc($zapytanie_tmp))
  10.     {
  11.                 echo '<div>'.$dane_tmp['title_cat'].'</div>';
  12.     }
  13.     echo '</td>';
  14.     if($x%3==0&&$x!=0) echo '</tr><tr>';
  15. }
  16. echo'</tr></table>';
  17. ?>


i zaczęło się coś dziać smile.gif Ale struktura wygląda teraz tak:

Kod
Kategoria  | Kategoria  | Kategoria  | Kategoria
Kategoria | Kategoria | Kategoria
                                 podkategoria
Podkategoria | Kategoria | Kategoria


Chodzi o to że podkategoria pojawia się jako kategoria główna i jeszcze pierwszy rząd ma 4 kolumny a nie 3...
elem84
Mógłbyś powiedzieć jakie dane masz w bazie questionmark.gif

  1. <?php
  2. $zapytanie=mysql_query("SELECT * FROM dow_cat");
  3. echo'<table><tr>';
  4. for($x=1;$dane=mysql_fetch_assoc($zapytanie);$x++)
  5. {
  6. $zapytanie_tmp=mysql_query("select * from dow_cat where ref='$dane[id]'");
  7. echo '<td>';
  8. echo '<div><b>'.$dane['title_cat'].'</b></div>';
  9. while($dane_tmp=mysql_fetch_assoc($zapytanie_tmp))
  10. {
  11. echo '<div>'.$dane_tmp['title_cat'].'</div>';
  12. }
  13. echo '</td>';
  14. if($x%3==0) echo '</tr><tr>';
  15. }
  16. echo'</tr></table>';
  17. ?>
tomek55
Teraz już wyświetla dobrze orócz tego że podkategorie wyświetlane są jako kategorie główne, wyświetlają sie 2 razy...

Jeśli chodzi o baze to struktura taka:

Kod
ID | REF | TITLE_CAT | IMG


ID - unikalne id każdej kategorii
REF - numer ID kategorii do której ma być przypisana podkategoria

dalej chyba nie musze tłumaczyć smile.gif


----- edit -----

Problem rozwiązany tak powinien wyglądać kod, może komuś sie przyda:

  1. <?php
  2. $zapytanie=mysql_query("SELECT * FROM dow_cat WHERE ref=0");
  3. echo'<table><tr>';
  4. for($x=1;$dane=mysql_fetch_assoc($zapytanie);$x++)
  5. {
  6. $zapytanie_tmp=mysql_query("select * from dow_cat where ref='$dane[id]'");
  7. echo '<td>';
  8. echo '<div><b>'.$dane['title_cat'].'</b></div>';
  9. while($dane_tmp=mysql_fetch_assoc($zapytanie_tmp))
  10. {
  11. echo '<div>'.$dane_tmp['title_cat'].'</div>';
  12. }
  13. echo '</td>';
  14. if($x%3==0) echo '</tr><tr>';
  15. }
  16. echo'</tr></table>';
  17. ?>
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.