|  |   | 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>    %NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][2])."";
 $browse_sub[2][active] = "<option>    %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>  %NAME</option>".s_browse_sub($data[$i][Subdivision_ID],$GLOBALS[browse_sub][2])."";
 $browse_sub[1][active] = "<option>  %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
 
  
 Зарегистрирован: 2005-04-04
 Сообщений: 1546
 | Вадим писал(а):Есть ли такая переменная, показывающая уровень вложенности раздела?Или как вычислять этот уровень по мере вывода меню?
 
 Уровень вложенности можно вычислить следующим образом: ".str_repeat(' ',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(" ",$lvl*4)."$f[Subdivision_Name]</otion>rn".LoadItems($f[Subdivision_ID],$lvl+1);
 }
 return($ret);
 }
 
 
 Единственный минус этой функции - это генерация кучи sql запросов в базу. В принципе можно одним запросом получить все разделы в массив, а потом бегать по массиву по вышеуказанному алгоритму.
 
 
 Temet nosce... |