テーブルに次のエントリがあります。
id name unit_id lft rgt level
------------------------------------------
1 Sports 01 1 30 0
2 Cricket 02 2 3 1
3 Hocky 03 10 13 1
4 Tennies 04 11 12 2
5 Baseball 05 14 15 1
6 Soccer 06 16 25 1
7 Carrom 07 17 22 2
上記のレコードは手動で挿入されます。ここで、親子関係<ul>
を<li>
タグに表示するために、codeigniterにレコードを動的に挿入します。私はこの記事を参照しています:
http://www.sitepoint.com/hierarchical-data-database-3/
以下のコードを参考にして行いました。
$description = $_GET['description'];
$name = $_GET['name'];
$unit_id = $_GET['unit_id'];
$parent_level = (int) $_GET['level'];
$level = (int) $_GET['level'] + 1;
$sql0 = "Select `lft`, `rgt` from tablename
Where `level` = $parent_level";
$result = $this->db->query($sql0);
$records = $result->result_array();
$lft = $records[0]['lft'];
$rgt = $records[0]['rgt'];
$sql1 = "UPDATE tablename SET rgt = rgt+2 WHERE rgt > $rgt ";
$this->db->query($sql1);
$sql2 = "UPDATE tablename SET lft = lft+2 WHERE lft > $lft ";
$this->db->query($sql2);
$sql3 = "INSERT INTO tablename (`id`,`name`,`unit_id`,`description`, `lft`, `rgt`, `level`)
values (NULL, '$name', '$unit_id','$description', '$lft', '$rgt', '$level')";
echo $this->db->query($sql3);
しかし、このコードは正しく機能しておらず、親子関係を維持していません。私はいくつかの間違った計算がここにあると思いますが、それで何が間違っているのかを知ることができません。
私は助けが必要です。ありがとうございます。