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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Самый подчиненный элемент

Сообщения:  [1-10]   [11-14] 

 
 автор: BMW   (06.01.2011 в 12:03)   письмо автору
 
   для: Trianon   (06.01.2011 в 11:53)
 

добавка:

$all = mysql_query("...");
while($as = mysql_fetch_array($all))
{
$id=$as[id];
$sub=$as[sub];
$mass_sub[$id]=$sub;// формируем массив из исходных данных
}

  Ответить  
 
 автор: Trianon   (06.01.2011 в 11:53)   письмо автору
 
   для: BMW   (06.01.2011 в 11:01)
 

я не понял, как у Вас из одной строки $mass_sub[$id]=$sub; образовался массив.

UPD. Похоже, въехал.
Если первая строка выполнялась в цикле, так это наверное как-то показать можно было?


Стобственно, что я думаю, я уже ж написал.
Если у Вас есть путь из ключей, упорядоченный по подчиненности, то искомым элементом будет хвост этого пути. Без сложных действий по копированию массива и удалению лишнего.
В то, что получить набор ключей в беспорядке проще, чем упорядоченным, я не верю (при схеме хранения дерева adjacency_lists, которую Вы применяете).
Упорядоченным этот путь получается и при пробеге от последнего потомка к корню, и при пробеге (рекурсивном, очевидно) от корня к потомку.

  Ответить  
 
 автор: BMW   (06.01.2011 в 11:01)   письмо автору
 
   для: Trianon   (06.01.2011 в 10:06)
 

Будучи не сильно осведомленым в сложных mysql запросах, решил добить идею с массивами в результате:

$mass_sub[$id]=$sub;// формируем массив из исходных данных
$mass_del=$mass_sub;//дабл массив
foreach($mass_sub as $vv_id => $vv_s)
$mass_del[$vv_s]='';//удаляем те значения чьи ID содержаться в SUB
//print_r($mass_del);
foreach($mass_del as $voo=>$ii)
if($ii!='')echo $voo;// самый подчиненный из перечисленного


правда, тут есть правило, нужно обязательно все элементы подчиненности были, без пропусков, но думаю в след модификации устраню, и наверное изменю логику, по-моему более эффективно сторить ветку в иерархии найдя раздел родительский у которго значение 0, а потом начиная с конечного значения проверять те что есть на соответсвие, как только подходят значит это и есть самый подчиненный из перечисленного множества, тут и пропуски в древе будут по барабану. Что Вы думаете об этом?

  Ответить  
 
 автор: Trianon   (06.01.2011 в 10:06)   письмо автору
 
   для: BMW   (06.01.2011 в 10:00)
 

Где стеб?

Решили? Респект.
Где код решения?

  Ответить  
 
 автор: BMW   (06.01.2011 в 10:00)   письмо автору
 
   для: Trianon   (05.01.2011 в 16:56)
 

Спасибо за стеб) Решил задачу)

  Ответить  
 
 автор: Trianon   (05.01.2011 в 16:56)   письмо автору
 
   для: BMW   (05.01.2011 в 16:52)
 

да что ж такое то...
http://lmgtfy.com/?q=nested%20sets

  Ответить  
 
 автор: BMW   (05.01.2011 в 16:52)   письмо автору
 
   для: Trianon   (05.01.2011 в 16:04)
 

Расскажите об этой схеме, у меня есть еще возможность изменить)

  Ответить  
 
 автор: Trianon   (05.01.2011 в 16:04)   письмо автору
 
   для: BMW   (05.01.2011 в 15:25)
 

>То есть в третьем столбце храним ид того кого подчиняем?
Нет. Там все значительно сложнее. Но У Вас же все равно схема id - parent_id.

  Ответить  
 
 автор: BMW   (05.01.2011 в 15:25)   письмо автору
 
   для: Trianon   (05.01.2011 в 14:30)
 

>Это задача о нахождении кроны дерева. (Крона, вообще-то не один элемент, а множество. )
>И решается соответствующим запросом к БД.
>
>
>UPD.
>Между прочим. Если У Вам на уровне приложения эти ключи уже выбраны, и если они представляют из себя путь от корня к элементу кроны, наиболее естественным было бы передавать их упорядоченной последовательностью, а не набором внавал. И тогда элементу кроны соответствовал бы последний элемент массива.
>
Они изначально не упорядочены, просто набор, а чтобы упорядочить, как я понимаю нужно знать иерархию (опять к тому же)
>UPD2.
>При хранении дерева по методике nested sets (вместо применяемой у Вас adjacency lists) признаком корневого элемента является явное условие n.lb+1==n.rb
>
То есть в третьем столбце храним ид того кого подчиняем?

  Ответить  
 
 автор: Trianon   (05.01.2011 в 14:30)   письмо автору
 
   для: BMW   (05.01.2011 в 14:15)
 

Это задача о нахождении кроны дерева. (Крона, вообще-то не один элемент, а множество. )
И решается соответствующим запросом к БД.


UPD.
Между прочим. Если У Вам на уровне приложения эти ключи уже выбраны, и если они представляют из себя путь от корня к элементу кроны, наиболее естественным было бы передавать их упорядоченной последовательностью, а не набором внавал. И тогда элементу кроны соответствовал бы последний элемент массива.

UPD2.
При хранении дерева по методике nested sets (вместо применяемой у Вас adjacency lists) признаком корневого элемента является явное условие n.lb+1==n.rb

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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