---
title: "Forum struktion."
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/19250-forum-struktion"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "cgi"
published: "2001-01-05T20:21:00.000Z"
updated: "2001-01-10T15:19:00.000Z"
replies: 10
views: 249
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/19250-forum-struktion"
---

# Forum struktion.

## #1 — cgi, 2001-01-05T20:21Z

Hur gör man för att bygga upp en trädforum struktion i perl på bästa sätt.

Permalänk: https://www.webforum.nu/p/19250

## #2 — Peter_B, 2001-01-06T02:29Z

Rekursivt är roligt!

Permalänk: https://www.webforum.nu/p/341452

## #3 — cgi, 2001-01-06T15:41Z

Ingen annan som kan ge ett mer utvecklat svar.?

Permalänk: https://www.webforum.nu/p/341453

## #4 — Peter_B, 2001-01-07T03:32Z

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".

Permalänk: https://www.webforum.nu/p/341454

## #5 — cgi, 2001-01-07T11:00Z

Jepp, helt rätt.

Permalänk: https://www.webforum.nu/p/341455

## #6 — Peter_B, 2001-01-08T01:38Z

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&#0124;ämne&#0124;text&#0124;0
2&#0124;Sv: ämne&#0124;mer text&#0124;1
3&#0124;nytt ämne&#0124;text&#0124;0

osv
```

då kan du kalla på &visainlägg("0")

```
 
sub visainlägg {
foreach $inlägg (@allainlägg) {
@data = split(/\&#0124;/,$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..

Permalänk: https://www.webforum.nu/p/341456

## #7 — cgi, 2001-01-08T08:17Z

Hej igen,
vore kul om du kunde skicka över hela koden, så jag ser mer i helhet hur du gjort.

Permalänk: https://www.webforum.nu/p/341457

## #8 — demo, 2001-01-08T11:08Z

Peter_B 

Finns möjlighet att sända källkoden även till mig?

//Demo

Permalänk: https://www.webforum.nu/p/341458

## #9 — demo, 2001-01-09T21:13Z

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

Permalänk: https://www.webforum.nu/p/341459

## #10 — Peter_B, 2001-01-10T05:06Z

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\>&nbsp;&nbsp;&nbsp;\</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 :)

Permalänk: https://www.webforum.nu/p/341460

## #11 — demo, 2001-01-10T15:19Z

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

Permalänk: https://www.webforum.nu/p/341461

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/19250-forum-struktion
