Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : vilfred                              2:5020/400     30 Sep 2002  23:27:21
 To : Vilfred
 Subject : вот более конкретно...
 -------------------------------------------------------------------------------- 
 
 
 может кто такие фишки делал, мои лыжи походу уже не едут...
 
 первое поле собственный код, второе код родителя(третье уровень 
 вложения верхний уровень 1, четвертое состояние 1 - узел, 0 - нет, и 
 дальше еще лдо черта полей с описаниями, для структуры они не важны):
 
 1 1 1 1
 2 1 .....
 3 1 .....
 4 1 .....
 5 4 .....
 6 4 .....
 
 и т.д.
 нужно сделать так, чтобы выводилась структура таблицы как в виндовсной 
 папке, как какой уровень вложения подпапки кликнул, тот и открылся.
 
 я по файлу(на самом деле не файл а массив, полученный селектом из 
 таблицы, но это не важно, все равно все строки, разделенные #, 
 находятся в массиве) бегу скриптом:
 
 $url="lesenka.pl";
 
 sub show_base{
  @row=@_; my @l=split /\|/ => $pr;
  #step1#
  @m = sort grep {!$_{$_}++} map {/^.*?#.*?#(.*?)#/} @row;
   # выясняю уровень вложения, чтобы от него строить верхний уровень
  #step2#
  foreach my $l(@row){ $l=~s!(\s)\1+|(\t)+|[\cM\cJ\n]!!g;
    my @tmp1= split /#/ => $l;
    do{print qq~<a href=$url?id_self=$tmp1[0]&path=\|$tmp1[0]>$tmp1[7]
 </a><br>\n~
   if $tmp1[3] == 1;
      print qq~$tmp1[7]~ if $tmp1[3] == 0;
      &view($tmp1[0], "  ") if $tmp1[3] == 1 and $id_self 
 ne '';
    } if $tmp1[2]==$m[0]; # это условие значит, что нужно первыми 
 выводить только верхние уровни
  }
  sub view{ my $self=$_[0]; $t=$_[1]; my @l=split /\|/ => $pr;
    foreach my $k(@row){
      my @tmp = split /#/ => $k;
      do{print qq~$t<a href=$url?id_self=$tmp[0]&path=$pr|$tmp[0]>$tmp[7]
 </a><br>\n~
    if $tmp[3] == 1;
        &view($l[$#l]) if $l[$#l] != $id_self;
        #print "<b>!$tmp[1] = $l[$#l]!</b>";
      } if $self eq $tmp[1] and $self eq $l[$#l];
    }
  }
 }
 
 вобщем такая вот задница... я уже честно гря просто офигел это дело 
 делать... 
 
 thx!
 
 -- 
 TEAM [Маньяки]
 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
 --- ifmail v.2.15dev5
  * Origin: Talk.ru (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 подскажите рекурсивный алгоритм, запарился...   vilfred   30 Sep 2002 22:43:52 
 вот более конкретно...   vilfred   30 Sep 2002 23:27:21 
 Re: вот более конкретно...   vilfred   01 Oct 2002 19:31:53 
Архивное /ru.perl/64881b4549bc.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional