Da ne otvaram noovu temu pa da iznesem moj problem :)
http://web.archive.org/web/200...rticles/hierarchical-data.html
odavde sa krenuo sa hijerarhijom jer mi treba unlimited kategorija i podkategorija na sajtu na kom radim.
E sad problem je sa dodavanjem cvora.
Strukura tabele:
Code (sql):
CREATE TABLE notre_offre(
id INT AUTO_INCREMENT PRIMARY KEY,
naziv VARCHAR(20) NOT NULL,
lft INT NOT NULL,
rgt INT NOT NULL
);
INSERT INTO `notre_offre` (`id`, `naziv`, `lft`, `rgt`) VALUES
(1, 'ROOT', 1, 4),
(2, 'TEST', 2, 3);
Ceo tree vadim sa upitom:
Code (sql):
SELECT node.id, CONCAT( REPEAT('-', COUNT(parent.naziv) - 1), node.naziv) AS name
FROM
notre_offre AS node,
notre_offre AS parent
WHERE
node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.naziv
ORDER BY node.lft;
I to smestam u selectbox gde je value ID kategorije.
Sada sa sledecim upitom pokusavam da ubacim novi cvor, svejedno da li je u root-u ili nekom ispod.
Code (sql):
LOCK TABLE notre_offre WRITE;
SELECT @myRight := rgt FROM notre_offre WHERE id = " . $this->input->post('category');
UPDATE notre_offre SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE notre_offre SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO notre_offre(id, naziv, lft, rgt) VALUES(null, '" . $this->input->post('title') . "', @myRight + 1, @myRight + 2);
UNLOCK TABLES;
I lepo mi doda post fieldsi to radi super.
Evo sveze kreirane tabele:
Code:
+----+-------+-----+-----+
| id | naziv | lft | rgt |
+----+-------+-----+-----+
| 1 | ROOT | 1 | 4 |
| 2 | TEST | 2 | 3 |
+----+-------+-----+-----+
2 rows in set (0.00 sec)
Posle inserta:
Code (sql):
LOCK TABLE notre_offre WRITE;
SELECT @myRight := rgt FROM notre_offre WHERE id = 2
UPDATE notre_offre SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE notre_offre SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO notre_offre(id, naziv, lft, rgt) VALUES(NULL, 'Child TEST', @myRight + 1, @myRight + 2);
UNLOCK TABLES;
dobijam ispis:
Code:
+----+------------+-----+-----
| id | naziv | lft | rgt
+----+------------+-----+-----
| 1 | ROOT | 1 | 6
| 2 | TEST | 2 | 3
| 3 | Child TEST | 4 | 5
+----+------------+-----+-----
3 rows in set (0.00 sec)
I ovaj "Child TEST " nece da bude dete TEST-a pa to ti je.
Dodavao sam jos cvorova sam rucno ali kad probam ovo opet nece da doda u vec postojeci ili npr. root.
Ne znam gde gresim, jel moze pomoc?