Hallo Leute,
Ich muss an einem bestehenden Forum eine Zusatzfunktion einbauen...
Es soll möglich sein, einen Thread nach titeln zu durchsuchen. D.H.. Es wird jeweils
nur ein Posting und darunter ein Stammbaum der Titeln des Threads gezeigt.
Beispiel:
Hallo
| --Re: Hallo
| |
| -- Re: Re: Hallo
| |--Re: Hallo
|
| -- Re: Re: Hallo
| |-- Re: Re: Hallo
| |-- usw.
| |--Etc.
die Tabelle schaut folgendermassen aus:
threadid | forumid | postid | topostid | title | body
Nun bereitet mir das generieren des Stammbaum heftige Probleme. ich denke da an zwei for schleifen
aber sehe im Momentüberhaupt nicht durch.
Hat vielleicht jemand ne Idee, wie ich den Stammbaum generieren könnte oder hat jemand vielleicht gerade ein Skript zur Hand?
ich bin für jeden Hinweis dankbar.
Vielen Dank zum voraus.
Rekursion mit mehreren Queries:
function rekursion ($thread_id, $post_id=0, $level=0)
{
global $baum;
static $level = 0;
$q = mysql_query ("select * from forum
where topostid=$post_id and thread_id=$thread_id
order by postid asc"
);
while ($x = mysql_fetch_array($q))
{
$x[level] = $level;
$baum[] = $x;
rekursion($thread_id, $x[post_id], $level+1);
}
}
$baum = array();
rekursion($thread_id);
dann kannst du deinen $baum ganz bequem in einer for-Schleife ausgeben.
Natürlich kannst du das auch direkt in der Funktion machen, aber so fand ich´s spaßiger.
oder mit dem 'Nested Sets' Modell
(Bäume mit SQL)
http://develnet.org/tech/tutorials/3.1.html
Hallo Leute vielen Dank für eure antworten.
@ Berni Dien tipp scheint Gold wert zu sein. Ist aber zu heavy für mich.
ich habs nun volgendermassen gelöst:
function get_tree($aktuell,$tab,$tid) {
$zwi=mysql_db_query("forum2","select * from posts where topostid='$aktuell' order by postid");
while ($myid = mysql_fetch_array($zwi)) {
echo $tab ."<a href=\"thread_baum.php?threadid=$tid&boardid=$boardid&page=$page&id=$myid[postid]\">". $myid[posttopic ]."</a><br>";
get_tree($myid[postid],$tab."<b> </b>");
}
}
nun funzt eigentlich alles wie ich es möchte, ausser das ich eine fehlermeldung erhalte.
Warning: Missing argument 3 for get_tree() in d:\apache\htdocs\forum2\thread_baum.php on line 7
ich rufe die funktion folgendermassen auf:
get_tree(0,"",$threadid);
Die variable $threadid existiert! dies habe ich mit echo $threadid; überprüft.
wö könnte hier der fehler liegen ?!
übrigens:
wenn ich die funktion anstelle so:
get_tree(0,"",$threadid);
folgendermassen aufruffe:
get_tree(0,"",11);
kriege ich immer noch die selbe meldung! wo liegt den da mein fehler :confused:
ist get_tree meine Funktion und Zeile 7 der initialisierende Aufruf? Dann hab ich keine blasse Ahnung, wo der Fehler herkommen kann ... :genauso confused:
na ja !
wird schon irgendwie ein bug meinerseits drinn sein !? aber wo?
Ich habe das problem mittlerweile umgangen indehm ich die variablen in der fonktion über golbals verfügbar machte.
Hi leute,
Sorry das ich noch mal stresse.
ich möchte gerne das der stammbaum grafisch angezeigt wird nicht nur durch einfaches einrücken.
Beispielsweise so:
http://www.webpublish.ch/forum/rekursion.gif
habe nun stundenlang gegoogelt aber leider kein tut gefunden das sich mit den images auseinandersetzt.
Hatt eventuell einer von euch ein link oder script auch lager?
Danke
diese Lösung http://develnet.org/tech/tutorials/3.1.html macht das alles automatisch!
versuchs lieber damit!
@ Bernie
Habe bereits gesagt, das Dein Tipp Gold wert scheint.
Aber wenn das so ist, ist er auch gold wert!!!
Dann werd ich mir das teil mal reinzihen müssen.
ich Danke Dir http://www.php-resource.de/images/icons/icon14.gif
@ Bernie
Leider kann ich bei diesem tut keine anleitung zum erstellen des baumes finden :(
Einen stammbaum anzeigen, habe ich bereits hingekriegt. Nur schaut das ergebniss folgendermassen aus:
A - Das Wurzelposting
B - Reply auf "A"
C - Reply auf "B"
D - 2. Reply auf "B"
ich mochte das noch mit diesen linienartigen grafiken verzieren damit die sache übersichtlicher wird. (wie auf dem oben gepostetem image)
Giebt es denn hierfür nirgens ein brauchbares tut?