![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 28.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z pobieraniem z bazy struktury drzewiastej. Mianowicie, mam taką tabele w bazie: PAGES: > id > created > title > body > position > children position odpowiada za pozycję, a w children jest id do ktorego ma być podpięty element menu. Wyświetlam tak główne elementy: <?php $pages = $db->query_select("SELECT * FROM `pages` WHERE `children` = '0' GROUP BY `position` ORDER BY `position`"); foreach($pages as $page) { echo $page['title'].' position: '.$page['position'].'<br />'; } ?> Ale kompletnie nie mam pomysłu jak wyświetlać podelementy tymbardziej, że chciałbym aby mozna było nieskończenie podpinać podelementy. Np dla takiej struktury: | 1 | 12.06.2008 12:34 | title 1 | dasdasdas | 1 | 0 | | 2 | 12.06.2008 12:34 | title 2 | dasdasdas | 2 | 1 | | 3 | 12.06.2008 12:34 | title 3 | dasdasdas | 3 | 2 | | 4 | 12.06.2008 12:34 | title 4 | dasdasdas | 4 | 2 | | 5 | 12.06.2008 12:34 | title 5 | dasdasdas | 5 | 0 | | 6 | 12.06.2008 12:34 | title 6 | dasdasdas | 6 | 5 | Wyświetlane byłoby coś takiego: title 1 > title 2 >> title 3 >> title 4 title 5 > title 6 Mógłby mnie ktoś naprowadzić (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ? Z góry dzięki i pzodrawiam, Kamil |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 3 Dołączył: 7.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Źle to rozwiązałeś. Chociaż nie bardzo rozumiem o co Ci chodzi z "w children jest id do ktorego ma być podpięty element menu", children to liczba mnoga :-). Ale wydaje mi się że to może Ci pomóc:
Jeśli chcesz mieć nieskończoną liczbę elementów, musisz zrobić tzw. relację jeden do wielu, czyli: PAGES: > id > created > title > body > position PAGE_CHILDREN: > id: > pola_jakie_chcesz: > page_id: I wybieranie jest proste: "SELECT * FROM `page_children` WHERE `page_id` = 'tu_id_strony' --tu sortowania i inne; Jeśli chcesz pobrać jedno dziecko to: "SELECT * FROM `page_children` WHERE `page_id` = 'tu_id_strony' ORDER BY `kolumna` LIMIT 0,1; Ewentualnie, jeśli to PAGE jest dzieckiem PAGE, robisz inaczej: PAGES: > id > created > title > body > position > parent_id I wtedy pobierasz tak: "SELECT * FROM `pages` WHERE `parent_id` = 'tu_id_strony' --tu sortowania i inne; I pojedyncze pobieranie analogicznie do poprzedniego przykładu. No, przynajmniej tak mówi zasada relacyjności w bazach. Poczytaj sobie o tym :-). W ogóle sam osobiście zawsze polecam używanie ORMów, to jest zdecydowanie wygodniejsza bez-zapytaniowa i dosyć bezbolesna metoda korzystania z baz danych. A w ogóle to najlepiej symfony+propel i życie staje się prostsze :-). Pozdrawiam Ten post edytował Mikz 5.08.2009, 10:57:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 20:56 |