phpbar.de logo

Mailinglisten-Archive

[php] Baumstruktur

[php] Baumstruktur

Andreas Teichrib beezle_(at)_subito.net
Wed, 23 Aug 2000 15:48:16 +0200


> > SELECT b.topic,count(*) AS level FROM forum AS a, forum AS
> b WHERE b.l
> > BETWEEN a.l AND a.r AND b.r BETWEEN a.l AND a.r GROUP BY b.id;
>
> Du brauchst dafür eine dritte Tabelle. Außerdem kannst Du die
> Abfrage verkürzen, weil wenn "b.l BETWEEN a.l AND a.r" dann
> ist auch immer "b.r BETWEEN a.l AND a.r".
>
> select a.topic, count(*) as level from forum as a, forum as
> b, forum as c where b.id = $id and a.l between b.l and b.r
> and a.l between c.l and c.r group by a.id;

danke! das klappt wunderbar, aber nun hab ich wieder einproblem :(

also, wenn ich zb folgende struktur habe (als baum):

forum1
|-ein thread
| |-re: ein thread
| | |-re:re:ein thread
|
|-noch einer
| |-re:noch einer

so, wenn einer ins forum kommt, sollen logischerweise nur die threads
(also keine antworten darauf angezeigt werden), mit:

"SELECT a.id,a.topic,a.nick,count(*),b.id AS level FROM forum AS a,
forum AS b, forum AS c WHERE b.id=1 AND a.l BETWEEN b.l AND b.r AND a.l
BETWEEN c.l AND c.r GROUP BY a.id HAVING count(*)<=2" klappt es auch
wunderbar und es kommt folgendes raus:

forum1
|-ein thread
|-noch einer

jetzt soll der user natürlich einen thread aufklappen können damit er
die antworten sieht (allerdings immer nur einen level tiefer), zb wenn
er auf "ein thread" klickt soll folgendes rauskommen:

forum1
|-ein thread
| |-re; ein thread
|
|-noch einer

usw. das wollte ich jetzt von mysql mit einem query erledigen lassen,
krieg ich aber irgendwie nicht ganz hin :/ hab schon den ganzen tag
rumprobiert mit zwei querys und allem möglichen, ist aber nix draus
geworden und ich bin kein stück weiter...

falls jemand schon mal so etwas gemacht hat oder weiß wie es geht, wärs
nett wenn ihr mir den query und ggf einen codeschnippsel in php schickt.

mfg andreas teichrib

[: www.beezle.de :]
[: beezle.darktech.org :]
[: root_(at)_beezle.de :]
[: icq_25474508 :]



php::bar PHP Wiki   -   Listenarchive