これは私の用語テーブル(カテゴリ)のデータベース構造です:
id | name | parent_id | level | position
--------------------------------------------------------------
1 | term 1 | NULL | 0 | 1
2 | term 2 | 1 | 1 | 1
3 | term 3 | 1 | 1 | 2
4 | term 4 | NULL | 0 | 2
5 | term 5 | 4 | 1 | 1
したがって、用語2と3は1の第1レベルの子であり、5は4の第1レベルの子です。
これは私の質問です:(そしてそれは正しくありません、これは修正されるべきです)
SELECT
`id`,
`name`
FROM
`terms`
ORDER BY
`position` ASC,
`level` ASC
これは私のphpです:
$terms = array();
// query part
if(!$this->_db->resultRows > 0)
return $terms;
while($d = $this->_db->fetch($r))
{
$terms[$d->id] = new Term($d->id);
}
return $terms;
現在の結果:
term 1
term 2
term 5
term 4
term 3
しかし、結果は次のようになります。
term 1
term 2
term 3
term 4
term 5
正しい結果を得るためにクエリを変更する方法がわかりません。
目標は、これを(複数の)選択ボックス
に出力することです。ネストされたリストでそれを行う方法は知っていますが、選択をネストすることはできません。