Tarkoituksena olisi saada luotua täysin dynaamisesti toimiva hierarkinen puurakenne tietokannan sisältämistä tiedoista. Olen pyrkinyt tätä toteuttamaan, joskin dynaamisuus tuottaa vaikeuksia hahmottaa minulle ja lopulta koodi muuttuu melkoiseksi sillisalaatiksi. Voin toimittaa haluaville esimerkki koodejani joilla olen hahmotellut toimintaa ja yksi osittain toimiva koodimallikin on olemassa, mutta ei täydellinen. Tietokantana voi toimiva ihan perus SQL-pohjainen ratkaisu .. itse olen hahmotellut access -tietokantaan ja tarkoitus olisi kääntää lopulta toimiva versio Oracle-pohjaiseksi.
Hahmottelin tietokannan rakenteen näin:
ID (autonumber) - Koodi (string) - Nimi (string)
------------------------------------------------
1 - 1.0 - Puunjuuri
2 - 1.1.0 - Puunrunko
3 - 1.1.1.0 - Puunoksa
4 - 1.1.1.1 - Puunlehti
5 - 1.1.1.2 - Omena
6 - 1.1.1.3 - Käpy
.
.
jne..
10 - 1.2.0
11 - 1.2.1
12 - 1.2.2
.
.
jne..
15 - 2.0
16 - 2.1.0
17 - 2.1.1
.
.
jne..
------------------------------------------------
Toivottavasti tuosta esimerkki tietokannan rakenteesta jokainen sai haetun idean. Oleellisen osa siis tuo koodi rakenteelle. Tarkoituksena olisi saada luotua mahdollisimman vähin tietokanhaun luotua puu. Eli vaikka hakemalla juuret ja puunlehdet omaan recordsettiinsä. Juuret erotetaan tietysti ".0" päätteestään ja muut on lehtiä puuhun. Voisiko tämän hoitaa esimerkiksi kahdella for -lauseella?
for (....)
{
for (....)
{
}
}
Toinen houkutteleva vaihtoehto on generoida koko puu html -tiedostoon ja onclickillä tuoda esille kasvavia haaroja.
Toivoisin helpottavia esimerkkejä, kun olen puhkinut tämän ongelman parissa, mutta kyseessä on varmasti aika helppo juttu kun sen vaan hahmottaa kaikkein yksinkertaisimmalla tavalla.
Jos jaksoitte lukea tänne asti, niin kiitoksia mielenkiinnosta. :) Heittäkää rohkeasti koodia ja kommenttia .. esimerkki koodia voin lähetellä sitä haluaville.
--
Divide, divide@hotpop.com
Tauluun parent_id joka ilmaisee edellisen noden id:n. Juurilla sitten vaikka parent_id = 0. Sen jälkeen rekursiota kehiin. (Jos nyt ymmärsin mitä haet)
Aihe on jo aika vanha, joten et voi enää vastata siihen.