rendered paste body function list_categories() { $options = array(); //select all parent categories first $query = $this->db->get_where("category",array('parent' => 0)); if( $query->num_rows() <= 0 ) return "<option value='0'>None</option>"; foreach( $query->result() as $row ) { $options[] = "<option value='{$row->id}'>-> {$row->name}</option>"; $subquery = $this->db->get_where("category",array('parent' => $row->id )); if( $subquery->num_rows() <= 0 ) return implode("",$options); foreach( $subquery as $subrow ) { $options[] = "<option value='{$subrow->id}'>---{$subrow->name}</option>"; $subsubquery = $this->db->get_where("category",array('parent' => $subrow->id )); if( $subsubquery->num_rows() <= 0 ) return implode("",$options); foreach( $subsubquery as $subsubrow ) { $options[] = "<option value='{$subsubrow->id}'>-----{$subsubrow->name}</option>"; } } } return implode("",$options); }