Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][SMARTY]Linki w formie drzewiastej
Forum PHP.pl > Forum > Przedszkole
krispak
Witam serdecznie.
Mam pewien problem, ktory polega na tym ze chcialbym wypisac z bazy danych linki glowne oraz podlegajace do kazdego linka glownego linki podrzedne. Czyli mniej wiecej cos takiego:

- Link 1
- Link 1.1
-Link 2
- Link 2.1
- Link 2.2

Problem polega na tym ze wypisuje mi glowne linki ale podrzedne nie przypisuje do konkretnego do ktorego podlegaja tylko wypisuje do kazdego, wyglada to nastepujaco:

- Link 1
- Link 1.1
- Link 2.1
- Link 2.2
- Link 2
- Link 1.1
- Link 2.1
- Link 2.2

W bazie wyglada to tak:
id
nest_under
title

gdzie w nest_under jest id linka poprzedzajacego gdy link glowny to jest 0.

Kod PHP:

  1. <?php
  2. $parentsql = $db->Query("SELECT * FROM strona WHERE nest_under = '0' ORDER BY pozycja");
  3.        $suma_menu = $parentsql->NumRows();
  4.        
  5.        $lp = 1;
  6.        if ($suma_menu > 0 )
  7.        {
  8.            while ($parentrow = $parentsql->FetchArray())
  9.            {
  10.                $parent[] = $parentrow;
  11.            
  12.                $farentsql = $db->Query("SELECT * FROM strona WHERE nest_under = '".$parentrow['id']."' ORDER BY pozycja");
  13.                while ($farentrow = $farentsql->FetchArray())
  14.                {
  15.                    $fchild[] = $farentrow;
  16.                }
  17.            }
  18.        }
  19.        $tmpl->assign('parent', $parent);
  20.        $tmpl->assign('fchild', $fchild);
  21.        $tmpl->assign('lp', $lp);
  22.        $tmpl->display('page/page_show.tpl');
  23. ?>


Temp w SMARTY
  1. {foreach item=p from=$parent}
  2. <tr>
  3. <td><a href="" class="menu"><b>{$p.title}</b></a></td>
  4. </tr>
  5. {foreach item=f from=$fchild}
  6. <tr >
  7. <td><a href="" class="submenu">{$f.title}</a></td>
  8. </tr>
  9. {/foreach}
  10. {/foreach}


Z gory dziekuje za wszelka pomoc.
Pozdrawiam
_olo_1984
można coś takiego zrobić, poczytaj to
zmodyfikuj trochę swój kod tnz. niech $parentrow['id'] będzie indexem w fchild[] dla $farentrow:
  1. <?php
  2. $fchild[$parentrow['id']] = $farentrow;
  3. ?>


a potem w smarty coś takiego:
  1. {section name=rek loop=$parent}
  2. <tr>
  3. <td><a href="" class="menu"><b>{$parent[rek].title}</b></a></td>
  4. {section name=prek loop=$fchild[rek]}
  5. {$fchild[rek][prek].title}
  6. <br />
  7. {/section}
  8. </tr>
  9. {section}


coś takiego, pisane z palca
krispak
Czytalem wlasnie o section wczesniej i tez kombinowalem to albo wyswietlalo mi jakies glupoty :] albo mialem wyswietlone w tej samej formie co teraz. Nie wiem wlasnie czy problem nie tkwi w samym skrypcie php :/ bo petla niby sie wykonuje tyle ze nie przypisuje do odpowiednich miejsc.
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.