Hierarchikus adatstruktúra SQL-ben ->JSON

Hierarchikus adatstruktúra SQL-ben ->JSON
2009-02-24T10:15:17+01:00
2009-02-25T13:36:47+01:00
2022-11-12T18:25:35+01:00
Dj Faustus
Üdvözletem,
egy, a Weblaboron már bemutatott módon tárolok hierarchikus adatstruktúrát SQL-ben.
Vizualizációjához való megoldáskeresésem közben (kipróbáltam már a PHP Tree Graph Ext-tet is, ami bár könnyen kezelhető, de az adatstruktúra mérete miatt más megoldást kellett keresnem) leltem rá a JavaScript Information Visualization Toolkit nevű eszközre, ami JSON fa-struktúrában fogadja az adatokat.

A kérdésem a következő lenne: hogyan lehetne az SQL-ben tárolt hierarchikus adatstruktúrából JSON struktúrát csinálni? Leginkább az elem gyermekeinek beillesztése okoz kissé fejtörést számomra (a többi csak-csak megy).
Mutasd a teljes hozzászólást!
A children struktúrán belül ugyanaz a szerkezet érvényes, mint azon kívül.

Az adott elem leszármozottai kerülnek be szépen a children struktúrába. Neked alighanem célszerűbb ez esetben a rekurzív megoldást választani, hogy egy-egy ágon teljesen végig menjenen a program és szépen feltöltse a struktúrát, mint a struktúrában ugrálni.
Mutasd a teljes hozzászólást!

  • Két megoldásod van szerintem:
    1) kézzel, azaz ahogy haladsz a struktúrában, úgy építed fel a stringet
    2) ha már sikerült egy php tömböt előállítanid a struktúrával, akkor: http://hu2.php.net/manual/en/function.json-encode.php

    És itt van egy jó kis tanulmány a MySQL-ről és a hierarchikus adatszerkezetekről:
    Graphs
    Mutasd a teljes hozzászólást!
  • A children struktúrán belül ugyanaz a szerkezet érvényes, mint azon kívül.

    Az adott elem leszármozottai kerülnek be szépen a children struktúrába. Neked alighanem célszerűbb ez esetben a rekurzív megoldást választani, hogy egy-egy ágon teljesen végig menjenen a program és szépen feltöltse a struktúrát, mint a struktúrában ugrálni.
    Mutasd a teljes hozzászólást!
  • Nos igen a megoldás tényleg ennyire egyszerű volt: a children struktúrán belül ugyanaz a szerkezet kerül, mint azon kívül,

    Ha neadjisten belefutna valaki ilyesmi problémába, okulásként szolgáljon itt egy PHP-függvény:
    function displayChildren($szulo, $szint) { global $dblink; $output = ""; $result = mysqli_query($dblink,"SELECT * FROM nodes WHERE parent_node='".$szulo."';"); $rownum=0; while ($row = mysqli_fetch_object($result)) { $rownum++; if ($rownum<mysqli_num_rows($result)) { $output .= "{\"id\": \"".$row->id."\",\"name\": \"".$row->node."\",\"data\":[],\"children\":[".displayChildren($row->node, $szint+1)."]},"; } else { $output .= "{\"id\": \"".$row->id."\",\"name\": \"".$row->node."\",\"data\":[],\"children\":[".displayChildren($row->node, $szint+1)."]}"; } } return $output; }

    A $dblink globális változó egy, a mysqli_connect függvénytől visszakapott MYSQL-azonosító.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd