Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Smarty, wyświetlanie tablicy za pomocą section
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
Aztech
Mam dane przekazane do Smarty za pomocą tablicy asocjacyjne
Przykładowe dane wyglądają tak
[id] [group_id] [group] [user_id] [username]
1 1 "uczniowie" 12 "Stefan"
2 1 "uczniowie" 15 "Arek"
3 1 "uczniowie" 17 "Romuald"
4 1 "uczniowie" 25 "Tomek"
5 2 "nauczyciele" 14 "Romek"
6 2 "nauczyciele" 19 "Krzysztof"
7 2 "nauczyciele" 66 "Ryszard"
8 3 "kuratorzy" 10 "Jan"
9 3 "kuratorzy" 22 "Grzegorz"

Chciałbym za pomocą section wy swietlić te dane w nastepujący sposób.
Uczniowie:
- Stefan
- Arek
- Romulad
- Tomek
Nauczyciele
- Romek
- Krzysztof
- Ryszard
Kuratorzy
- Jan
- Grzegorz

Jedyny sposób jaki mi przychodzi do głowy jest bardzo nieelegancki. Zasada działania polega na tym
- zapamiętaj ID grupy
- jeśli pierwsza iteracja wyświetl nazwę grupy
- jesli nie pierwsza iteracja to porównaj aktualne ID grupy z zapamiętanym, jeśli się różni wyświetl nazwe grupy
- wyświetl użytkownika

Może ktoś zna lepszy sposób?
mike
Cytat(Aztech @ 2006-05-02 21:06:02)
Jedyny sposób jaki mi przychodzi do głowy jest bardzo nieelegancki. Zasada działania polega na tym
- zapamiętaj ID grupy
- jeśli pierwsza iteracja wyświetl nazwę grupy
- jesli nie pierwsza iteracja to porównaj aktualne ID grupy z zapamiętanym, jeśli się różni wyświetl nazwe grupy
- wyświetl użytkownika

Zastanawiem się kiedy ludzie zrozumieją, że Smarty pomimo tego że udostepnia dużo mechanizmów to jest nadal tylko systemem szablonów.

Nie powinno sie wykonywać takich operacji po stronie szablonu.

Tutaj odpowiedź jest prosta: jeśli nie potrafisz wyświetlić danych to znaczy że paczka danych została źle przygotowana po stronie php. I to właśnie po stronie php powinieneś dokonać manipulacji tą tablicą, żeby potem łatwo było ją wyświetlić.
Aztech
Mike, zdaję sobie z tego sprawę, ale z racji, że smarty jest tak obszerne i kobylaste, jest pewna szansa, że znajduje się zaimplementowane ułatwienie pozwalające wyswietlać tego typu dane.

Dane do wyświetlenia pobierane są za pomocą poniższego zapytania
  1. SELECT rpg.*, rpgu.*, ru.name AS pguname, ru.username"
  2. ."
  3. FROM rbx_priv_groups
  4. AS rpg"
  5. ." LEFT JOIN rbx_priv_group_users AS rpgu ON rpg.priv_group_id = rpgu.group_id"
  6. ." LEFT JOIN rbx_users AS ru ON rpgu.user_id = ru.user_id"
  7. ." WHERE 1


Jak widzisz, następuje tutaj połączenie grup prywatnych wraz z użytkownikami do nich należacymi oraz pobranie najpotrzebniejszych danych o tych uzytkownikach

Po co mi takie rozwiązanie w ogóle jest potrzebne?
Otóż. Na stronie wyświoetlone zostaną grupy wraz z informacją ilu człownków posiadają. Tym gryupom będą potem przydzielane uprawnienia. Jendakże dla użytkownika przydzielającego danej grupie uprawnienia lub zbiorowi grup wygodniej jest podejrzeć od razu kto się w takiej grupie znajduje (by wiedział komu jakie uprawnienai nadaje) bez preładowywania stron, stąd pobranie od razu członków.
Lsita członków grupy pojawiałaby się po kliknięciu "pokaż członków grupy" w postaci div'a któremu nadajemy za pomocą java scriptu atrybut display:none lub display:block.
Można to sobie wyborazić mniej więcej tak: (>> równoważne jest z linkiem pokaż człownków, << równoważne jest z linkiem ukryj)

1. Uczniowie >>
2. Nauczyciele >>
3. Kuratorzy >>

Po wybrabiu uczniów pojawi się:

1. Uczniowie <<
- Stefan
- Arek
- Romulad
- Tomek
2. Nauczyciele >>
3. Kuratorzy >>
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.