[ alfa-pro @ 07.08.2013. 15:34 ] @
Jel moze neko da mi pomogne kako ja da odradim ovo. Pre ovoga sam postavio objasnjenje u Bazama da vidim kako to funkcionise
http://www.elitesecurity.org/t467910-0#3329949

Kako ja na kraju da izlistam ovo :

Code:

Default
    |----Test Category 1
    |----Seccond Test Category 1
        |----Another Test Category 1 


A baza ima tabelu categories sa col Id, title, lft, rgt

Citat:

id | title | lft | rgt
-------------------------------------------------------------------
1 | Default | 1 | 20
2 | Test Category 1 | 2 | 18
3 | Seccond Test Category 1 | 3 | 15
4 | Another Test Category 1 | 4 | 10


ja sam probao sa kodom ispod. Znaci Glavna kategorija je Default i sve ostale koje imaju lft i rgt izmedju 1 i 20 su podkategorije. Valjda je tako

Code:
$sql = "SELECT * FROM categories WHERE lft BTWEEN 1 AND 20 ORDER BY lft ASC";
$result = mysql_query($sql);
i sa while izlistam 

while($row < mysql_fetch_array($result)) {
     echo str_repeat('|-----', 1) . $row['title] . '<br>';
}


Dobijem ovo a trebalo bi kao u primeru gore.

Code:

|----Default
|----Test Category 1
|----Seccond Test Category 1
|----Another Test Category 1 


[ alfa-pro @ 07.08.2013. 17:21 ] @
Sredio sam uhh namucio sam se stvarno.

Model:



Code:
    public function fetchNode() {
        $q = $this->db->query("SELECT lft, rgt, title FROM content_categories");

        if ($q->num_rows() > 0) {
            $row = $q->row();  
        }
       
        $query = $this->db->query("SELECT * FROM content_categories WHERE lft BETWEEN '".$row->lft."' AND '".$row->rgt."' ORDER BY lft ASC");
  
        return $query->result();
    }


Controller simple :

Code:
     $this->data['node'] = $this->categories_model->fetchNode();

Views:

Code:

   <?php
          // Set empty stack

        $right = array();

        foreach($node as $row) {       
            
            if (count($right) > 0) {
                while ($right[count($right)-1] < $row->rgt) {
                    array_pop($right);
                }
            }

             echo str_repeat(' |— ', count($right)).$row->title 

            $right[] = $row->rgt;           
        }
        ?>