Tiedän, että otsikko on huono, ja vielä huonommin kuvaa kysymystäni, mutta muuta en keksinyt.
Minulla on sellainen ongelma, etten keksi miten toteuttaisi seuraavan. Tiedän että pyyntöni vaikuttaa "koodatkaa se minulle", mutta olisin kiitollinen, jos onnistuisitte kertomaan miten toteuttaa, niin että itse oppisin jotain.
Seuraava listaus:
-otsikko
--alaotsikko
-----alaotsikko
--alaotsikko
-otsikko
Nuita otsikoita on maarittelemätön määrä, kuten myös alaotsikoita, ja alaotsikoilla määrittelemätön määrä alaotsikoita.
Olisi tarkoitus saada tulostettua nuot kaikki tiedot, ne haetaan tietokannasta(vain sivu seikka). En vain tiedä miten totettaa se.
Missä muodossa tiedot ovat, tai siis mistä pitäisi tietää, minkä otsikon alle tietty alaotsikko kuuluu?
Aivan, no siis minulla on kenttä, jossa on tieto, minkä otsikon/alaotsikon alle se kuuluu.
Eli jos on:
Jos otsikko olisi Murske, ja sen alaotsikko olisi 0-55mm niin sen äitiotsikko on Murske, ja se tieto on tuossa kentässä.
Olen esittänyt kyseisen kaltaisen puun tulostamisen toisessa keskustelussa (tämä ja tämä viesti yhteensä). Siellä neuvon kokoamaan uuden taulukon, josta selviävät kunkin otsikon alaotsikot.
Toinen vaihtoehto on kiertää aina kaikki rivit läpi ja katsoa, millä niistä on yläotsikkona juuri äsken tulostettu otsikko. Tämä tapa on ehkä yksinkertaisempi toteuttaa mutta hitaampi, jos otsikoita on suuri määrä.
$rivit = array( array("otsikko" => "Murske", "ylempi" => null), array("otsikko" => "0–55 mm", "ylempi" => "Murske"), ); function tulosta($rivit, $ylempi) { $tulostettavat = array(); foreach ($rivit as $rivi) { if ($rivi["ylempi"] == $ylempi) { $tulostettavat[] = $rivi; } } if (!empty($tulostettavat)) { echo "<ul>\n"; foreach ($tulostettavat as $rivi) { echo "<li>", htmlspecialchars($rivi["otsikko"]); tulosta($rivit, $rivi["otsikko"]); echo "</li>\n"; } echo "</ul>\n"; } } tulosta($rivit, null);
Nykyisen taulusi (ja siten myös tämän mallikoodin) ongelma on, että et voi samaan aikaan tehdä sivuja A/X/Y ja B/X/Y, koska silloin taulussa olisi kaksi X/Y-riviä, joita ei voisi erottaa toisistaan. Siksi kannattaa käyttää viittauksissa otsikon sijaan id-kenttää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.