Strona 1 z 1

[PHP] Nested sets - jak zbudować drzewo (left, right)?

: wt sie 28, 2007 12:24 pm
autor: WebCM
Potrzebuję skryptu, który ustawi automatycznie pola left i right na podstawie:

Kod: Zaznacz cały

ID | ID wyższej kategorii
http://pastebin.4programmers.net/2953 - ta funkcja zajmuje się ponownym zapisem ilości pozycji w kategoriach. Czy dałoby się podpiąć tutaj również uaktualnianie tych pól? Funkcja:
- pobiera wszystkie kategorie z bazy
- liczy zawartość (I FOR)
- iteruje po każdej kategorii (II FOR)
--- wyszukuje "rodziców" i dodaje im swoją liczbę pozycji (WHILE)

Jeśli nie da się podpiąć tego, dobra będzie też osobna funkcja (a może nawet lepiej?). Tylko w jaki sposób napisać odpowiedni algorytm? Najlepiej, by nie wykonywał osobnego zapytania dla każdej kategorii jak w przykładzie na SitePoint. LEFT oznacza też kolejność (zapytanie do wyświetlenia listy kategorii zawiera: ORDER BY left), choć przebudowa ewentualnie może opierać się na tytułach (alfabetycznie).

Re: [PHP] Nested sets - jak zbudować drzewo (left, right)?

: pn wrz 10, 2007 8:47 am
autor: the_foe
[php]<?php
$connect = mysql_connect('host', 'user', 'pass');
mysql_select_db('baza', $connect);

function liczby($liczba, $i = 0)
{
$res = mysql_query("SELECT * FROM tabela WHERE motherid = ".$liczba);
while($row = mysql_fetch_assoc($res))
{
echo ($liczba == 0) ? '<b>' : '';

for($a=0; $a<$i; $a++)
{
echo '...';
}
echo $row['title'];
echo ($liczba == 0) ? '</b>' : '';
echo '<br />'."\n";
liczby($row['id'], $i+1);
}
}

liczby(0);
?>[/php]

kod by tiraeth