Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Если меньше в два, в три раза, как это в if вставить?
 
 автор: Unreal   (19.04.2009 в 02:20)   письмо автору
 
 

Делаю вывод директории с вложенными категориями, с помощью <ol><lI> итд
мне необходимо знать что к примеру текущий раздел находится на два раздела меньше чем предыдущий, как мне это в if понять?

то есть у меня сейчас есть $current_depth = 1; $previous_depth = 3;
а может быть $current_depth = 1; $previous_depth = 2;

как мне в if запихнуть что если $current_depth в два раза меньше чем $previous_depth а не просто меньше?

  Ответить  
 
 автор: Лерк   (19.04.2009 в 02:28)   письмо автору
 
   для: Unreal   (19.04.2009 в 02:20)
 

на два раздела меньше
в два раза меньше

?

  Ответить  
 
 автор: devzorg   (19.04.2009 в 02:35)   письмо автору
 
   для: Unreal   (19.04.2009 в 02:20)
 

Интересный подход, хранить текущую и предыдущую глубину ))) а из текущей не вычетается 1 ?)

Вообще нужно рекурсию юзать и не нужно никаких там подсчетов где и сколько. пара if и рекурсия и все

  Ответить  
 
 автор: Unreal   (19.04.2009 в 11:54)   письмо автору
 
   для: devzorg   (19.04.2009 в 02:35)
 

не имеет смысла отнимать 1, потому что предыщущая вложенность может быть 5 разделов, а текущая 2 раздела

  Ответить  
 
 автор: Unreal   (19.04.2009 в 11:47)   письмо автору
857 байт
 
   для: Unreal   (19.04.2009 в 02:20)
 

вот тут http://talks.php.net/show/ezp-inside-out/20 описывается как в таблице хранить структуру директорий


                <?php if ($this->add_new_node): 
                        echo 
$this->form;
                      else:
                        echo 
'<a href="/adm11/manage-recipes-directory/add-root/1/">Добавить раздел</a>';
                        echo 
"\n<ol>";
                        
$previous_depth 1;
                        foreach (
$this->directory_data as $directory_data) {
                            
$current_depth count(explode('/'trim($directory_data['path_string'], '/')));
                           
                            if (
$current_depth $previous_depth) {
                                echo 
"\n<ol>";
                            }
                            if (
$current_depth $previous_depth) {
                                echo 
"\n</ol>";
                            }
                            echo 
"\n<li>\n{$directory_data['node_name']} | 
                                  <a href='/adm11/manage-recipes-directory/add-subdirectory/1/parent_id/
{$directory_data['id']}/depth/{$current_depth}/'>Добавить подраздел</a>\n</li>";
                            if (
$current_depth $previous_depth) {
                                echo 
"\n</ol>";
                            }
                            
$previous_depth count(explode('/'trim($directory_data['path_string'], '/')));
                        }
                        echo 
"\n</ol>";
                      endif;
                
?>


Сейчас почти правильно выводится, кроме последней
вот как в базе это выглядит
http://img518.imageshack.us/my.php?image=directorydata.jpg
вот как на странице показывается
http://img253.imageshack.us/my.php?image=directorypage.jpg

те данные что в таблице с id: 9,10,11,12 должны находиться на том же уровне что и id 3 (то есть Бульоны), а у меня они не на том же уровне

в приложенном файле дамп таблицы

можно конечно сделать так
<?php if ($this->add_new_node): 
                        echo 
$this->form;
                      else:
                        echo 
'<a href="/adm11/manage-recipes-directory/add-root/1/">Добавить раздел</a>';
                        foreach (
$this->directory_data as $directory_data) {
                            
$current_depth count(explode('/'trim($directory_data['path_string'], '/')));
                            echo 
"\n" str_repeat('-'$current_depth) . "  {$directory_data['node_name']} | 
                                  <a href='/adm11/manage-recipes-directory/add-subdirectory/1/parent_id/
{$directory_data['id']}/depth/{$current_depth}/'>Добавить подраздел</a>\n<br />";

                        }
                      endif;
                
?>

но получается очень не наглядно, и хотелось бы это выстроить с помощью тегов ol, li

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования