0

I'm looking for the simplest way to output an ordered list (UL -> Li ...) from the entries generated by the script server.php provided with JsTree plugin.

Screen Shot of JsTree structure in MySql DB

Thx for your lights

4

1 に答える 1

3

それはあなたを助けることができるかもしれません:

SELECT * FROM table ORDER BY level;

次のようなものを受け取ります。

$a = array(
    array('id' => 1, 'parent_id' => 0, 'level' => 0),
    array('id' => 2, 'parent_id' => 1, 'level' => 1),
    array('id' => 3, 'parent_id' => 1, 'level' => 1),
    array('id' => 4, 'parent_id' => 2, 'level' => 2),
    array('id' => 5, 'parent_id' => 3, 'level' => 2)
);

この配列を準備します。

$prepare = array();

foreach ($a as $record) {
    $prepare[$record['id']] = $record;
}

そしてそれを再帰的に歩く:

function getTree($array, $id, $level = 0)
{
    if ($array[$id]['level'] != $level) {
        return;
    }
    echo '<ul>' . PHP_EOL;
    echo '<li>' . $id;
    foreach ($array as $data) {
        if (($data['parent_id'] === $id)){
            getTree($array, $data['id'], $level + 1);
        }

    }
    echo '</li>'. PHP_EOL;
    echo '</ul>'. PHP_EOL;
}


getTree($prepare, 1);

その例は次を返します:

<ul>
<li>1<ul>
<li>2<ul>
<li>4</li>
</ul>
</li>
</ul>
<ul>
<li>3<ul>
<li>5</li>
</ul>
</li>
</ul>
</li>
</ul>
于 2013-02-12T13:52:26.827 に答える