PHP « Дерево категорий в выпадающем select
Может кто знает как вывести массив всего дерева в выпадающий select ? (что бы option был в виде дерева)
Таблица без уровня вложенности без level.
Может есть какое то альтернативное решение без этого select.
Цель сделать возможность добавлять статью в нужную категорию и что бы категории были представлены для выбора в удобном виде.
Вот так я вывожу дерево в списке, в общем меню.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
function categories_backend_list($array)
{
$str = '<ul>';
foreach($array as $data)
{
$str .= '<li>';
$str .= $data['title'];
if (isset($data['children']))
{
$str .= categories_backend_list($data['children']);
}
$str .= '</li>';
}
$str .= '</ul>';
return $str;
}
Вот кусок из массива который мне нужно вывести в select
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
[3] => Array
(
[id] => 48
[lft] => 8
[rgt] => 27
[title] => Красота
[description] => Красота
[keywords] => Красота
[url] => beauty
[status] => active
[children] => Array
(
[0] => Array
(
[id] => 59
[lft] => 9
[rgt] => 10
[title] => Прически и стрижки
[description] => Прически и стрижки
[keywords] => Прически и стрижка
[url] => hairstyles-and-haircuts
[status] => active
)
[1] => Array
(
[id] => 58
[lft] => 11
[rgt] => 12
[title] => Макияж
[description] => Макияж
[keywords] => Макияж
[url] => makeup
[status] => active
)
[2] => Array
(
[id] => 57
[lft] => 13
[rgt] => 14
[title] => Маникюр и педикюр
[description] => Маникюр и педикюр
[keywords] => Маникюр и педикюр
[url] => manicure-and-pedicure
[status] => active
)
Может я где втыкаю но не могу придумать и найти как мне это сделать. Можно даже поганой ссылкой я там разберусь. В общем пните.
Таблица без уровня вложенности без level.
Может есть какое то альтернативное решение без этого select.
Цель сделать возможность добавлять статью в нужную категорию и что бы категории были представлены для выбора в удобном виде.
Вот так я вывожу дерево в списке, в общем меню.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
function categories_backend_list($array)
{
$str = '<ul>';
foreach($array as $data)
{
$str .= '<li>';
$str .= $data['title'];
if (isset($data['children']))
{
$str .= categories_backend_list($data['children']);
}
$str .= '</li>';
}
$str .= '</ul>';
return $str;
}
Вот кусок из массива который мне нужно вывести в select
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
[3] => Array
(
[id] => 48
[lft] => 8
[rgt] => 27
[title] => Красота
[description] => Красота
[keywords] => Красота
[url] => beauty
[status] => active
[children] => Array
(
[0] => Array
(
[id] => 59
[lft] => 9
[rgt] => 10
[title] => Прически и стрижки
[description] => Прически и стрижки
[keywords] => Прически и стрижка
[url] => hairstyles-and-haircuts
[status] => active
)
[1] => Array
(
[id] => 58
[lft] => 11
[rgt] => 12
[title] => Макияж
[description] => Макияж
[keywords] => Макияж
[url] => makeup
[status] => active
)
[2] => Array
(
[id] => 57
[lft] => 13
[rgt] => 14
[title] => Маникюр и педикюр
[description] => Маникюр и педикюр
[keywords] => Маникюр и педикюр
[url] => manicure-and-pedicure
[status] => active
)
Может я где втыкаю но не могу придумать и найти как мне это сделать. Можно даже поганой ссылкой я там разберусь. В общем пните.
1 ответов
Вставь в метод рекурсивный необязательным параметр уровня вложенности равный 0 и на каждой рекурсии итерируй
Оптионы потом табами отделишь, хотя с ними точно не скажу. Я тебе описал как уровень вложенности получать