Hur gör man för att bygga upp en trädforum struktion i perl på bästa sätt.
Forum struktion.
10 svar · 242 visningar · startad av cgi
Ingen annan som kan ge ett mer utvecklat svar.?
hmm.. förstår jag dig rätt om du vill ha något liknande det jag har på min sida? http://www.scorpiondata.com
kolla under "diskussionsforum".
------------------
PeterSign v 2.3.36
Jepp, helt rätt.
jag kan skicka över källkoden till dig om du vill, det är ingen större hemlighet. eller vill du att jag drar en förklaring här? det är litegrann...
vi säger att du har en fil med inlägg, enligt nedan:
1|ämne|text|0
2|Sv: ämne|mer text|1
3|nytt ämne|text|0
osv
då kan du kalla på &visainlägg("0")
sub visainlägg {
foreach $inlägg (@allainlägg) {
@data = split(/\|/,$inlägg);
if ($data[3] eq $_[0]) {
print "ämne: $data[1], text $data[2]";
&visainlagg($data[0]);
}
}
}
detta borde visa alla inlägg med svar på gamla inlägg precis under det gamla inlägget. om du trixar till det lite med tabeller så kan du få till det så att alla svar visas med lite indrag..
------------------
PeterSign v 2.3.36
Hej igen,
vore kul om du kunde skicka över hela koden, så jag ser mer i helhet hur du gjort.
Peter_B
Finns möjlighet att sända källkoden även till mig?
//Demo
------------------
Den som vandrar ödmjukhetens väg drabbas inte av trafikstockningar.
Har provat ditt förslag till trädstruktur, men tyvärr inte fått det att fungera.
Min textfil med "rubriker" är uppbyggd enligt följande.
Först är ett nummer som visar vilket inlägg det är. Därefter följer rubrik, namn och lite annan information. Varje rad slutar med antningen "nytt" eller en siffra.
"Nytt" betyder att inlägget är en startråd, dvs första inlägget i en ny tråd. En siffra betyder att det handlar om ett svarsinlägg, och siffran visar då vilken inlägg man svarat på.
Enligt listan nedan är inlägg 213 ett svar på inlägg 211. 212 är en starttråd osv.
211::Rubrik::Johan::9:e Jan 2001, kl. 21.34::nytt
212::Rubrik::Erik::9:e Jan 2001, kl. 21.35::nytt
213::Rubrik::namn::9:e Jan 2001, kl. 21.35::211
214::Rubrik::namn::9:e Jan 2001, kl. 21.35::213
Vet nu inte riktigt hur jag skall strukturera upp den snurra som skriver ut inläggen, så att svarsinläggen hamnar under korrekt inlägg?
Allt övrigt i diskussionsforumet fungerar utmärkt. Dock är det detta med att strukturera upp inläggen i trädstruktur som knasar lite.
Har som sagt provat ditt förslag, men fick det tyvärr inte att fungera.
Behöver nödvändigtvis inte hjälp med en fullständig kod, även om det vore bra :)
Önskar dock hjälp med någon ide hur man strukturerar upp det hela så att svarinläggen, som sagt hamnar på sin korrekta placering i trädet.
Mvh,
Demo
------------------
Den som vandrar ödmjukhetens väg drabbas inte av trafikstockningar.
demo:
så här långt kan jag säga att du har gjort rätt.
jag skulle personligen ha skrivit "0" istället för "nytt" för att markera ett nytt inlägg, där "0" får representera roten i trädet, men jag antar att "nytt" får funka också.
för att skriva ut alla inlägg rekursivt så ställer vi oss följande fråga:
Hur ritar vi upp inläggsträdet?
jo,
skriv ut inläggen som ligger unden roten. (som du pekar på när du kallar på funtionen)
rita alla underträd, om dom finns.
det är allt du behöver göra.
alltså, du kallar på en funktion:
print "<table><tr><td>";
&visainlägg("nytt");
print "</td></tr></table>";
längre ner står det kanske:
sub visainlägg {
# vi antar här att du har alla inlägg i @inlagg
foreach my $inlägg (@allainlägg) {
my @data = split(/::/,$inlägg);
if ($data[4] eq $_[0]) {
print "<table><tr><td> </td><td>ämne: $data[1]</td></tr><tr><td></td><td>"; # här kan du ha en länk att trycka på för mer info
&visainlagg($data[0]);
print "</td></tr><table>";
}
}
}
sådär... det här med största säkerhet blivit fel nånstans därinne i de rekursiva snurrorna, eller så har jag deklarerat nån variabel fel så att det krockar... men i stora drag så ska det funka. detta är lämpligt för forum med relativt få inlägg (<1.000) eftersom vi loopar igenom alla inlägg för varje utskrift som sker (långsamt om de blir många).
jag ska lägga upp koden till mitt diskussionsforum nånstans så snart som möjligt. postar i denna tråd då.
keep me posted :)
------------------
PeterSign v 2.3.36
Peter_B
Tack för hjälpen. Fick det att fungera. Dock blev jag av någon anledning tvungen att byta ut eq mot == i koden, för att det skulle fungera.
Har tidigare byggt ett trädforum, men lessnade när jag inte fick någon ordning på strukturen. Fast när jag såg den här tråden så fick jag inspiration att fortsätta projektet. :)
Tack för hjälpen.
Mvh,
Demo
------------------
Den som vandrar ödmjukhetens väg drabbas inte av trafikstockningar.