Регистрация
Вход через соцсети
Восстановление пароля

Иерархический выпадающий список - МЕНЮ

Новый топик
30.05.2007, 05:43
Ответить | Цитировать
Гость
Гость

вывожу выпадающий список по типу меню карты сайта:

Цитата:
$browse_sub1[prefix] = "";
$browse_sub1[unactive] = "<option>%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$browse_template)."";
$browse_sub1[active] = "<option>%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$browse_template)."";
$browse_sub1[suffix] = "";


А мне нужен иерархический список, т.е. я хочу вставить опр. кол-во пробелов перед %NAME в зависимости от уровня вложенности раздела.

Есть ли такая переменная, показывающая уровень вложенности раздела?
Или как вычислять этот уровень по мере вывода меню?
30.05.2007, 06:40
Ответить | Цитировать
Гость
Гость

а лучше подскажите мне как считать разделы (конкретного раздела) в массив и вывести потом в виде иерархического списка.
30.05.2007, 13:15
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

далее в глубь по аналогии

Код:

$browse_sub[2][prefix] = "";
$browse_sub[2][unactive] = "<option>&nbsp;&nbsp;&nbsp;&nbsp;%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][2])."";
$browse_sub[2][active] = "<option>&nbsp;&nbsp;&nbsp;&nbsp;%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][2])."";
$browse_sub[2][suffix] = "";

$browse_sub[1][prefix] = "";
$browse_sub[1][unactive] = "<option>&nbsp;&nbsp;%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][2])."";
$browse_sub[1][active] = "<option>&nbsp;&nbsp;%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][2])."";
$browse_sub[1][suffix] = "";

$browse_sub[0][prefix] = "";
$browse_sub[0][unactive] = "<option>%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][1])."";
$browse_sub[0][active] = "<option>%NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][1])."";
$browse_sub[0][suffix] = "";
31.05.2007, 04:40
Ответить | Цитировать
Гость
Гость

А как самому написать цикл, чтобы без использования меню?
31.05.2007, 11:36
Ответить | Цитировать
h/z

Зарегистрирован:
2007-02-06
Сообщений: 755

не понимаю смысла вопроса

цикл вы можете написать на php, используя данные выбранные самостоятельно из mysql
13.10.2008, 17:08
Ответить | Цитировать
Гость
Гость

Ты сам то проверяешь свои коды нелепые ?
22.10.2008, 17:18
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Вадим писал(а):
Есть ли такая переменная, показывающая уровень вложенности раздела?
Или как вычислять этот уровень по мере вывода меню?


Уровень вложенности можно вычислить следующим образом: ".str_repeat('&nbsp;',substr_count($data[$i][Hidden_URL],'/')-1)."

Как-то давно я писал вот такую рекурсивную функцию:
Код:

/*
$par_sub_id - ИД раздела
$lvl - уровень вложенности
*/
function LoadItems($par_sub_id,$lvl) {
global $LinkID;

$ret = "";
$res = mysql_query("select * from Subdivision where Parent_Sub_ID='$par_sub_id' and Checked=1 order by Priority",$LinkID);
for($i=0; $i<mysql_num_rows($res); $i++) {
$f = mysql_fetch_assoc($res);
$ret .= "<option value='$f[Hidden_URL]'>".str_repeat("&nbsp;",$lvl*4)."$f[Subdivision_Name]</otion>rn".LoadItems($f[Subdivision_ID],$lvl+1);
}
return($ret);
}


Единственный минус этой функции - это генерация кучи sql запросов в базу. В принципе можно одним запросом получить все разделы в массив, а потом бегать по массиву по вышеуказанному алгоритму.

Temet nosce...
198 196 2008-10-22 17:18:32 7143
Описание проекта