Древовидное меню с помощью MySQL

  • Автор темы Perf2k2
  • Дата начала

Absurd

Guest
Автор оригинала: Crazy
Шеф, мой вопрос касался интерпретируемости. Судя по тому, как настойчиво ты уводишь тему в сторону, конкретно этот термин был употреблен без особого смысла?
По-моему PHP скрипт должен просто выполнить какой-то запрос и полученные данные вставить в какие-то места выходного файла. Делать кучу левых запросов с рекурсивными вызовами лично я бы не стал.
Пускай лучше думает SQL сервер, чем мой скрипт.
 

Zaval

Новичок
Не поверите :)
Ради этого:
Вообще мне лень разбираться ...

Сохранил себе топик, продолжайте. Жду новых версий.
 

Perf2k2

Guest
Как я понимаю, SQL-сервер будет быстрей выполнять действия, чем скрипт. Ведь он это делает сразу на уровне программы, а скрипт надо обработать интерпретатором, а потому уже этот интер... будет делать все действия, которые ему дал скрипт. Я правильно мыслю?
 

akul

Guest
Автор оригинала: Crazy
Шеф, мой вопрос касался интерпретируемости. Судя по тому, как настойчиво ты уводишь тему в сторону, конкретно этот термин был употреблен без особого смысла?

P.S. А сколько умных слов, употребленных без нужды -- это просто рекорд месяца... :) Особенно понравилось "интеллектуальное ленивое-опережающее вычисление". :) Красно-черные деревья... Люблю. :)
Смех без причины - признак дурачины. Если тебе не известно, что такое красно-черные деревья, это характеризует тебя, а не автора статьи. Статья, кстати, конкретно по теме, рассказывает именно о том, как избежать ситуации, когда "SQL запрос съедает основное время", но для понимания её надо иметь представление о теории графов. Чего, кажется, не наблюдается.
Что касается интерпретируемости PHP, то это действительно основной тормоз правильно написанных страниц.
 

Crazy

Developer
Akul, из соображений гуманности я не буду спрашивать тебя, КАК ИМЕННО ты собираешься использовать красно-черные деревья именно в означеном контексте. Просто впредь внимательно читай контекст прежде, чем растопыривать пальцы.
 

akul

Guest
я - никак, у меня свой подход: http://www.crimaniak.com/akul/articles/forum.html
но после прочтения более внимательно возникает более глубинный вопрос: _какое вообще_ отношение имеют упомянутые тобой деревья к той статье? На всякий случай поискал термин по Ctrl-F - тоже не нашел.
 

Absurd

Guest
Автор оригинала: Crazy
Akul, из соображений гуманности я не буду спрашивать тебя, КАК ИМЕННО ты собираешься использовать красно-черные деревья именно в означеном контексте. Просто впредь внимательно читай контекст прежде, чем растопыривать пальцы.
Давайте не будем фидорасничать и пихать друг другу в лицо контексты.

PHP:
function start_menu($from) { 
    $res=mysql_query("SELECT id,sub_id,url,name FROM ".$from." 
  WHERE sub_id=0") or die(err_str(1002)); 
    while($row=mysql_fetch_array($res)) 
/* Тут создается объект "ассоциативный массив"
MYSQL_ASSOC тут нету, так что каждый элемент наличествует в двух экземплярах */
  { 
        menu($row['id'],$row['name'],"",$from); 
    } 
} 

function menu($id, $name, $url, $from) { 
    $res = mysql_query("SELECT id, sub_id, url, name FROM ".$from." 
  WHERE sub_id = $id") or die(err_str(1002)); 

/* Локальные переменные тоже вполне могут храниться в виде ассоциативного массива, в котором имени переменной сопоставлена величина вариантного типа */

    if (mysql_num_rows($res) > 0) 
  { 
  echo "<LI><A HREF=\"#\" ONCLICK=\"return false\">&nbsp;".$name."</A></LI><UL>"; 
        while($row = mysql_fetch_array($res)) 
/* Тут аналогичная ситуация */
    {
            menu($row['id'], $row['name'], $row['url'], $from); 
/* А тут этот (эти) массив(ы) пихае(ю)тся в некий стек и формируется вызов самое себя. Кроме того, вполне возможно, что аргументы функции тоже передаются в виде массива вариантных значений (Я исподный код Zend не потрудился почитать) */
        } 
      echo "</ul>"; 
    } 
    else 
    { 
    echo "<LI><A HREF=\"".$url."\" target=\"io\">".$name."</A></LI>"; 
    } 
}
Остается только прикинуть накладные расходы на создание массивов. 99.9%, что это хеш-списки. Деревья тут не нужны, я думаю - вот тут я виноват, конечно.
 

Crazy

Developer
Деревья тут не нужны, я думаю - вот тут я виноват, конечно.
Очень забавно читать это после фразы про "фидорасничать". :) Опять же из соображений гуманности и невнесения оффтопика не буду развивать тему о фидошных приемах общения. :)

Про накладные же расходы на создание массивов в твоем случае можно забыть -- выполнение sql-запросов займет принципиально больше времени.
 
Сверху