Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wyświetlanie rekordów z bazy danych
Forum PHP.pl > Forum > Przedszkole
pafeu
baza
  1. cat_id parent_id left_id right_id level cat_name
  2. 1 -1 1 74 -1 ALL
  3. 214 1 22 73 0 KATEGORIA1
  4. 223 214 23 72 1 1PODKAT1
  5. 215 1 20 21 0 KATEGORIA2
  6. 216 1 15 24 0 KATEGORIA3
  7. 223 216 18 19 1 3PODKAT1
  8. 223 216 12 17 1 3PODKAT1

kodem
  1. $query = "SELECT * FROM " . $DBPrefix . "categories WHERE level = 1 ";
  2. $res = mysql_query($query);
  3.  
  4. while ($row = mysql_fetch_assoc($res))
  5. {
  6. $template->assign_block_vars('cat_list', array(
  7. 'ID' => $row['cat_id'],
  8. 'KATEGORIE' => $category_names[$row['parent_id']],
  9. 'PODKATEGORIE' => $category_names[$row['cat_id']]
  10. ));
  11. }

pobieram kategorie i podkategorie ale mam problem
nie wyświetlają mi się kategorie, które nie mają podkategorii
a kategorie które mają kilka podkategorii wyświetlają się kilka razy
wygląda to tak:

- KATEGORIA1, 1PODKAT1
- TU POWINNA BYĆ KATEGORIA BEZ PODKATEGORII
- KATEGORIA3, 3PODKAT1
- KATEGORIA3, 3PODKAT2
nospor
Kod co tu pokazales pobiera tylko i wyłącznie podkategorie. Widac, nie pokazales wszystkiego.

Nie mniej jednak, powinienies grupowac wpierw dane w php, a dopiero potem je wyswietlac. Tutaj pokazalem jak to sie robi:
http://nospor.pl/grupowanie-wynikow.html
pafeu
pokazałem cały kod
w bazie jest
  1. cat_id parent_id level cat_name
  2. 1 -1 -1 ALL
  3. 214 1 0 KATEGORIA1
  4. 223 214 1 1PODKAT1
  5. 215 1 0 KATEGORIA2
  6. 216 1 0 KATEGORIA3
  7. 223 216 1 3PODKAT1
  8. 223 216 1 3PODKAT1

level 0 to kategorie
level 1 to podkategorie
cat_id wskazuje na kategorie
parent_id wskazuje na podkategorie
jeżeli parent_id jest takie samo jak cat_id to znaczy, że jest to podkategoria
i to jest ok
problem jest inny
nie wyświetlają mi się kategorie, które nie mają podkategorii
a kategorie które mają kilka podkategorii wyświetlają się kilka razy
wygląda to tak:

- KATEGORIA1, 1PODKAT1
- TU POWINNA BYĆ KATEGORIA2 BEZ PODKATEGORII
- KATEGORIA3, 3PODKAT1
- KATEGORIA3, 3PODKAT2
nospor
Jak juz mowilem:
WHERE level = 1
ten o to warunek pobiera ci tylko i wyłącznie podkategorie. Z tego kodu co pokazales nie ma szans pobrac nazwa KATEGORII dla tych PODKATEGORII. Byc moze w szablonie cos jeszcze robisz. Nie wiem, jak juz mowilem, nie pokazales wszystkiego.

Skoro wiec tym warunkiem: WHERE level = 1 pobierasz tylko PODKATEGORIE, to nie spodziewaj się, że zapytanie zwroci ci KATEGORIE bez PODKATEGORII.
Powinienies pobierac KATEGORIE GLOWNE i dla nich szukac PODKATEGORII a nie odwrotnie.

Zas co do powtarzarzania danych to juz ci w pierwszym poscie podalem linka do arta, jak to sie prawidlowo robi.
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.