Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Poprawne generowanie zagnieżdżonych list ul
wiechol
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 12.03.2006

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


Witam

O jakiegoś czasu męczę się z problemem poprawnego generowania wielopoziomowych list.
Listy przedstawiają strukturę drzewiastą z bazy, a dokładniej kategorie i podkategorie.
Dotychczas stosowałem spacje by uzyskać pożądany efekt jednak teraz muszę skorzystać z list <ul><li> Podchodziłem do tego tematu już wiele razy jednak zawsze z marnymi rezultatami.

Na poniższym screenie graficzne przedstawienie problemu:

http://img145.imageshack.us/img145/6786/kategorieiw9.jpg

Po lewej mamy przedstawioną tabelkę z poprawnie wyglądającą listą kategorii(ustawioną za pomocą spacji) dodatkowo pokazałem tam dane z bazy. Po prawej natomiast widok poprawnie wyglądającej listy(Wpisana manualnie). Nie mam już siły na te listy więc proszę was o sugestie, pomoc w tym temacie.

Tablica kategorii wystarczy ją dodać przez include i objechać foreachem z magicznym kodem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dodatkowo podam jeszcze poprawny kod listy:


Kod
<ul>
    <li>Windows
        <ul>
            <li>Win  98
                <ul>
                    <li>Win 98 SE</li>
                </ul>
            </li>
            <li>Win XP
                <ul>
                    <li>Win XP Basic</li>
                    <li>Win Xp Profesional</li>
                </ul>
            </li>
            <li>Win Vista
                <ul>
                    <li>Win Vista Starter</li>
                    <li>Win Vista Home Basic</li>
                    <li>Win Vista Home Premium</li>
                    <li>Win Vista Business</li>
                    <li>Win Vista Enterprise</li>
                    <li>Win Vista Ultimate</li>
                </ul>
            </li>
            <li>Win 95</li>
        </ul>
    </li>
    <li>Linux
        <ul>
            <li>Debian</li>
            <li>Gentoo</li>
            <li>Mandriva Linux</li>
            <li>Ubuntu</li>
            <li>Slackware</li>
            <li>Red Hat Linux</li>
        </ul>
    </li>
    <li>Mac OS
        <ul>
            <li>Mac OS X 10.3 Panther</li>
            <li>Mac OS X 10.4 Tiger</li>
            <li>Mac OS X 10.5 Leopard</li>
        </ul>
    </li>
    <li>Testowa A
        <ul>
            <li>Testowa AB
                <ul>
                    <li>Testowa ABC
                        <ul>
                            <li>Testowa ABCD
                                <ul>
                                    <li>Testowa ABCDE</li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>


Najlepsze wyniki do jakich doszedłem to poprawne wyświetlanie list ale niepoprawne zagnieżdżanie:

  1. <?php
  2. function showHtmlLists(){
  3. include_once(ROOT_DIR.'kategorieArray.php');
  4. $li = '<ul>';
  5. $tmpLevel = 0;
  6. foreach($categories as $elem){
  7. if($elem['level'] > $tmpLevel){
  8. $li .='<ul>';
  9. }elseif($elem['level'] < $tmpLevel){
  10. $li .='</ul>';
  11. }
  12.  
  13. $li .= '<li>'.$elem['name'].'</li>';
  14.  
  15. $tmpLevel = $elem['level'];
  16. }
  17. $li .= str_repeat('</ul>', $tmpLevel);
  18. $li .= '</ul>';
  19.  
  20. return $li; 
  21. }
  22. ?>


Ten post edytował wiechol 20.08.2007, 19:34:12
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 23.08.2025 - 01:28