[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Древовидное отображение
Soldier Ghost
Всем привет, наконецто провайдер перестал гнать ) и я смог наконецто суда зайти, народ мне нужна помощь мне нужно из базы MySQL вытащить данные в древовидном виде
т.е.
Тест 1
--Тест 1.1
----Тест1.2
и т.д.
У самого вообще ничего в голову не лезет.



Спустя 51 минута, 39 секунд (4.11.2009 - 02:18) Ulanych написал(а):
Не совсем понятно какая структура данных в базе. Я бы сделал цикл. Данные из базы принимаем в массив (массивы), соответствующим образом группируем, сортируем и п.т.
Древовидность можно осуществить простым циклом типа:
PHP
<?php
$arr 
= array("item1""item2""item3");
$subarr = array();
$subarr[0] = array("item11""item12""item13""item14""item15");
$subarr[1] = array("item21""item22""item23""item24""item25");
$subarr[2] = array("item31""item32""item33""item34""item35");

for ($=
0$i<sizeof($arr); $i++)
{
   print 
"-".$arr[$i]."<br />\n";
      for (
$j=0$j<sizeof($subarr[$i]); $j++)
      {
          print 
"--".$subarr[$i][$j]."<br>\n";
      }
}


Короче делаешь многомерный массив, а потом выводишь его хоть с помощью FOR(), хоть FOREACH() хоть чего угодно еще и по ходу форматируешь как тебе надо.

Спустя 16 часов, 32 минуты, 1 секунда (4.11.2009 - 18:50) Soldier Ghost написал(а):
Я ничего не понял, и наверное не правильно объяснил вот ниже приведён код, суть работы у кода который ниже правильная но мне нужно написать такую функцию или ещё чтонибудь чтобы запросы писались за меня, если я буду вручную это делать каждый запрос писать то мне придётся штук 20 написать и то на последнем цикл закончится даже если будет продолжение, мне нужно чтобы эта штука сама состовлялась и подстовлялась
Код который должен состовлятся:
PHP
$sql_3 mysql_query("SELECT login FROM users WHERE invite = '".$sh_2['login']."'");
                while(
$sh_3 mysql_fetch_array($sql_3))
                {
                    echo 
$sh_3['login']."<br>";
                }

Пример:
PHP
$sql = mysql_query("SELECT login FROM users WHERE invite = '".$user_id."'");
        while($sh = mysql_fetch_array($sql))
        {
            echo $sh['login']."<br>";
            $sql_2 = mysql_query("SELECT login FROM users WHERE invite = '".$sh['login']."'");
            while($sh_2 = mysql_fetch_array($sql_2))
            {
                echo $sh_2['login']."<br>";
                $sql_3 = mysql_query("SELECT login FROM users WHERE invite = '".$sh_2['login']."'");
                while($sh_3 = mysql_fetch_array($sql_3))
                {
                    echo $sh_3['login']."<br>";
                }
            }
        }

Спустя 22 минуты, 46 секунд (4.11.2009 - 19:13) Kuliev написал(а):
Soldier Ghost
Попробуйте сформировать Ваш вопрос корректней, а то что то больно много не дочетов и не поняток!

Спустя 12 минут, 25 секунд (4.11.2009 - 19:25) glock18 написал(а):
PHP
$sql mysql_query("SELECT login FROM users WHERE invite = '".$user_id."'");
        while(
$sh mysql_fetch_array($sql))
        {
            echo 
$sh['login']."<br>";
            
$sql_2 mysql_query("SELECT login FROM users WHERE invite = '".$sh['login']."'");
            while(
$sh_2 mysql_fetch_array($sql_2))
            {
                echo 
$sh_2['login']."<br>";
                
$sql_3 mysql_query("SELECT login FROM users WHERE invite = '".$sh_2['login']."'");
                while(
$sh_3 mysql_fetch_array($sql_3))
                {
                    echo 
$sh_3['login']."<br>";
                }
            }
        }


аццкий пепел... циклы, циклы и запросы, запросы, запросы...

Спустя 50 секунд (4.11.2009 - 19:26) Kuliev написал(а):
glock18
Причем одни и теже с темже параметром ))

Спустя 3 минуты, 40 секунд (4.11.2009 - 19:30) Soldier Ghost написал(а):
Я объяснил как мог ) больше нечего добавить сейчас прокоментирую код
PHP
//Поиск всех пользователей которых пригласил юзер ВАСЯ
$sql mysql_query("SELECT login FROM users WHERE invite = 'ВАСЯ'");
//Выводим их всех в цикле
        
while($sh mysql_fetch_array($sql))
        {
//Допустим нашелся такой ИГОРЬ
            
echo "ИГОРЬ<br>";
//Тут уже поиск всех пользователей которых пригласил ИГОРЬ
            
$sql_2 mysql_query("SELECT login FROM users WHERE invite = 'ИГОРЬ'");
//Выводим их в цикле
            
while($sh_2 mysql_fetch_array($sql_2))
            {
// Предположим что нашёлся один ГРИША
                
echo "ГРИША<br>";
//Тут поиск пользователей которых пригласил ГРИША
                
$sql_3 mysql_query("SELECT login FROM users WHERE invite = 'ГРИША'");
//Выводим их в цикле
                
while($sh_3 mysql_fetch_array($sql_3))
                {
//Если кто-то нашёлся
                    
echo $sh_3['login']."<br>";
// И тд. так до тех пор пока не найдутся все
                
}
            }
        }

Вроде афигенно прокомментировал )

Спустя 4 минуты, 22 секунды (4.11.2009 - 19:34) Kuliev написал(а):
Soldier Ghost
Помоему это можно сделать одним запросом!

Спустя 4 минуты, 25 секунд (4.11.2009 - 19:39) Soldier Ghost написал(а):
Подскажи как он будет выглядеть )

Спустя 11 минут, 29 секунд (4.11.2009 - 19:50) Kuliev написал(а):
Цитата (Soldier Ghost @ 4.11.2009 - 21:39)
Подскажи как он будет выглядеть )

А вы слышали про нормальную формы бд, их всего 6 советую прочитать!

Спустя 5 минут, 28 секунд (4.11.2009 - 19:56) Soldier Ghost написал(а):
Это т.е. создать другую отдельную таблицу в БД и туда заносить всех приглашённых и от кого?

Спустя 10 минут, 47 секунд (4.11.2009 - 20:06) Kuliev написал(а):
Soldier Ghost
Вот тебе мысль сам развивай
Код

Таблица юзеры
1:Вася
2:Петя
3:Саша
4:Маша
и т.д.

Таблица друзья
1:1:2
1:1:3
1:1:4
1:2:1



Спустя 16 часов, 4 минуты, 20 секунд (5.11.2009 - 12:11) Soldier Ghost написал(а):
В общем я создал таблицу с двумя полями айди юзера и айди пользователя кого он пригласил, мне кажется я не правильно сделал помоги развить мысль или дай ссылки на "нормальные формы БД".

Спустя 28 минут, 30 секунд (5.11.2009 - 12:39) sergeiss написал(а):
На самом деле правильно сделал.
У тебя, как я понял, неопределен уровень "вложенности" приглашений. Для одного юзера может получиться 5 уровней, для другого 50.

Поэтому твою первоначальную идею, с учетом новой таблицы, надо "развить" до создания функции. В которой ты показываешь всех друзей указанного пользователя. И для всех друзей вызываешь эту же фунцию, т.е. саму себя изнутри неё же, только с другими параметрами (называется сие рекурсивный вызов).

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

Пример функции:
PHP
function get_friends( $login, $count )
{
  if( $count == 0 ) return;
  $query = mysql_query("SELECT login FROM users WHERE invite = '$login'");
  while($sh = mysql_fetch_assoc($query))
  {
     echo $sh['login']."<br>";
     get_friends( $sh['login'], $count - 1 );
  }
}
 // конец функции


И начальный вызов функции (с ограничением вложенности, равным 10):
PHP
get_friends( 'ВАСЯ', 10 );

Спустя 7 минут, 50 секунд (5.11.2009 - 12:47) glock18 написал(а):
sergeiss
Ну чему ты учишь хоть? циклы-циклы + запросы-запросы... ну он ведь сейчас возьмет и сделает так, не подумав.

Спустя 6 минут, 37 секунд (5.11.2009 - 12:54) sergeiss написал(а):
glock18 - а в его случае по-другому нельзя, при его постановке задачи smile.gif Да, будут циклы и много запросов. Тут не получится составить один какой-то "супер-пупер запрос", потому что уровень вложенности неизвестен. Он нуля и до бесконечности (если ТС не сделает принудительное ограничение).

"Отвергаешь - предлагай, предлагаешь - делай" smile.gif То есть, предложи свой вариант, чтобы решить предложенную задачу.

Спустя 6 минут, 1 секунда (5.11.2009 - 13:00) glock18 написал(а):
Есть вариант проще. Потребуется по одному запросу на каждый уровень вложенности (против одного запроса на каждый элемент дерева)

Есть начальный userId
1. выбираем для него.
2. собираем id выбранных юзверей
3. выбираем все для этих id (не забываем выбирает оба id, чтобы сохранить связь).
и так далее.

Спустя 5 минут, 15 секунд (5.11.2009 - 13:05) sergeiss написал(а):
Получится "каша" полная. Проще, нагляднее (и возможно даже быстрее) будет сделать как я показал. Любое "упрощение" приведет только к усложнению алгоритма и запутанности текста скрипта.

Спустя 20 минут, 25 секунд (5.11.2009 - 13:25) glock18 написал(а):
Цитата
Получится "каша" полная. Проще, нагляднее (и возможно даже быстрее) будет сделать как я показал


да ладно? с чего бы вдруг то?

Спустя 13 минут, 26 секунд (5.11.2009 - 13:39) Kuliev написал(а):
Цитата (glock18 @ 5.11.2009 - 15:00)
Есть вариант проще. Потребуется по одному запросу на каждый уровень вложенности (против одного запроса на каждый элемент дерева)

Есть начальный userId
1. выбираем для него.
2. собираем id выбранных юзверей
3. выбираем все для этих id (не забываем выбирает оба id, чтобы сохранить связь).
и так далее.

+1

Спустя 59 секунд (5.11.2009 - 13:40) sergeiss написал(а):
Цитата (glock18 @ 5.11.2009 - 14:25)
да ладно? с чего бы вдруг то?

Код - в студию smile.gif

И тут сравним уже то, что я написал, и то, что ты напишешь.

PS. А в качестве рефери Твина позовём smile.gif

Спустя 45 минут, 43 секунды (5.11.2009 - 14:25) glock18 написал(а):
Кода не будет smile.gif Я уже давно пересмотрел свою позицию насчет "давать готовый код или алгоритм".

простая выкладка:
1. в базе 1000 пользователей.
2. среднее количество приглашенных пользователем пользователей: допустим, 3.

пользователь А пригласил пользователей Б, В и Г
пользователь Б пригласил пользователей В, Г, Д
пользователь В пригласил Е, П, Р
и так далее до 1000 записей.

Выводы:
1. есть куча вариантов делать повторные запросы. (в обоих случаях нужно это отслеживать).
И ИМХО это проще отследить, когда контроллируешь ID кучей, а не дергаешь все для каждого пользователя отдельно.

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

Что ни говори, Сергей, а 1000 запросов никогда не будут выполняться быстрее нескольких с where in по индексу.

Для моего варианта 1 проблема обрабатывается элементарно. А для твоего?

Спустя 18 минут, 9 секунд (5.11.2009 - 14:44) sergeiss написал(а):
Повторные запросы? Да, будут.

Но в твоем случае, когда всё идет кучей, будет каша. Из которой придется выделять, кто же и кого приглашал. На это уйдет тоже некоторое время, только уже в ПХП. И вот тут уже не факт, что твой алгоритм будет быстрее.
А еще если учесть, что надо всю эту фигню разделить (хотя бы) на 5-м или 10-м уровне ветвления... Когда уже не у всех могут быть приглашенные. Запутаешься smile.gif
Пусть лучше будут повторные запросы, чем полная запутанность.

Так что - код в студию! Можешь в закрытом разделе, там и обсудим. Но я продолжаю утверждать, что мой алгоритм проще, понятнее и логичнее. И, возможно, даже и быстрее.

И вообще. Мой принцип простой: не надо усложнять то, что можно сделать просто.

Спустя 3 минуты, 57 секунд (5.11.2009 - 14:47) glock18 написал(а):
* ругаясь про себя * окей, будет код. чуть позже сегодня, сейчас времени нет.

Спустя 5 минут, 44 секунды (5.11.2009 - 14:53) Gabriel написал(а):
laugh.gif огласите время и место дуэли пожалуйста wink.gif

Спустя 13 минут, 8 секунд (5.11.2009 - 15:06) glock18 написал(а):
сюда выложу

Спустя 44 минуты, 5 секунд (5.11.2009 - 15:50) Michael написал(а):
Какая нибудь хранимая процедурка в MySql хорошо бы справилась
с этой задачей. Я правда не смотрел пока их - синтаксис не знаю.
В реальности табличка кто-кого пригласил наверное и невелика вовсе
(это же не всемирный съезд массонов)
Можно вытянуть ее в php, перевести в массив и запустить простую
рекурсию ( как впрочем во втором посте и посоветовали). Запрос к базе - один.

Спустя 8 часов, 55 минут, 54 секунды (6.11.2009 - 00:46) Soldier Ghost написал(а):
Спасибо всем

Спустя 1 час, 40 минут, 28 секунд (6.11.2009 - 02:27) glock18 написал(а):
Я просто офигенно крут! laugh.gif laugh.gif

Смотрим решение (по мне, оно настолько изящно, насколько оно даже не могло быть smile.gif ):

Свернутый текст
<?php
$userId = 1; // staring node
$fetchedUsers = array(); // users, that are already fetched

function doQuery($ids, $order = 1)
{
// searching by passed id/ids. If ids is array, using implode and sql-in.
// getting result from sql, setting each element's key as user id
// result will be like this:

switch ($order) // is just imitation of recursive changing of resultset
{
case 1:
return array(
2 => array(
'id' => 2, // may be omitted
'name' => 'Вася',
'parentId' => 0,
),

5 => array(
'id' => 5,
'name' => 'Петя',
'parentId' => 0,
),

7 => array(
'id' => 7,
'name' => 'Саша',
'parentId' => 0,
),

18 => array(
'id' => 18,
'name' => 'Коля',
'parentId' => 0,
)
);

case 2:
return array(
1 => array(
'id' => 1, // may be omitted
'name' => '1231',
'parentId' => 5,
),

4 => array(
'id' => 4,
'name' => '21',
'parentId' => 5,
),

12 => array(
'id' => 12,
'name' => '123123123',
'parentId' => 7,
),

43 => array(
'id' => 43,
'name' => '112',
'parentId' => 18,
)
);

default:
return array(
122 => array(
'id' => 122, // may be omitted
'name' => '122',
'parentId' => 12,
),

123 => array(
'id' => 123,
'name' => '123',
'parentId' => 12,
),

1122 => array(
'id' => 1122,
'name' => '1122',
'parentId' => 12,
),

124 => array(
'id' => 124,
'name' => '124',
'parentId' => 12,
)
);

}
}

$order = 1; // needed for doQuery simulation.
$users = doQuery($userId, $order);
do {
$idsToFetch = array();
if (is_array($users))
{
// finding all users, that are still not in result array ($fetchedUsers)
$idsToFetch = array_diff_key($users, $fetchedUsers);
if (empty($idsToFetch))
break; // if array is empty, then no need to run query again. breaking the loop.

$fetchedUsers += $users; // merging arrays by key
$users = doQuery($idsToFetch, ++$order); // invoking next query
}
}
while (!empty($idsToFetch)); // looping while have ids to fetch (anyhow loop stops iteration above - at the break operator)

echo 'Queries done: ' . $order;
echo '<pre>Fetched users';
print_r($fetchedUsers);
echo '</pre>';
$tree = array();

// the next step: to place all items on their places.
// important to know the fact, that array elements are ordered in order, that were pushed in array
// tree level was increasing, so one iteration gonna be enough.

// that is really fast solution! and holds just a few lines

foreach($fetchedUsers as $id => &$user) // passing value by reference is important
{
if ($user['parentId'] == 0) // no parent, then pushing to the root of the tree
$tree[$id] =& $user; // however, do not forget to copy user by reference!
else
// that is all trickery. It comes up for any nesting level
// but do not require recursion, or even second loop through users array
// depends on that, we just copied variable above by reference!
// so we are still changing source array, but tree is also being changed!

$fetchedUsers[$user['parentId']]['items'][$id] =& $user;
}
// I seem, that is really fantastic solution. I was in luck anyway smile.gif

unset($fetchedUsers);

echo '<pre>Tree';
print_r($tree);
echo '</pre>';

Спустя 38 минут, 48 секунд (6.11.2009 - 03:06) Joker написал(а):
Если интересно то вот результат который выдает скрипт glock18'a

result
Цитата

Queries done: 4
Fetched usersArray
(
    [2] => Array
        (
            [id] => 2
            [name] => Вася
            [parentId] => 0
        )

    [5] => Array
        (
            [id] => 5
            [name] => Петя
            [parentId] => 0
        )

    [7] => Array
        (
            [id] => 7
            [name] => Саша
            [parentId] => 0
        )

    [18] => Array
        (
            [id] => 18
            [name] => Коля
            [parentId] => 0
        )

    [1] => Array
        (
            [id] => 1
            [name] => 1231
            [parentId] => 5
        )

    [4] => Array
        (
            [id] => 4
            [name] => 21
            [parentId] => 5
        )

    [12] => Array
        (
            [id] => 12
            [name] => 123123123
            [parentId] => 7
        )

    [43] => Array
        (
            [id] => 43
            [name] => 112
            [parentId] => 18
        )

    [122] => Array
        (
            [id] => 122
            [name] => 122
            [parentId] => 12
        )

    [123] => Array
        (
            [id] => 4
            [name] => 123
            [parentId] => 12
        )

    [1122] => Array
        (
            [id] => 12
            [name] => 1122
            [parentId] => 12
        )

    [124] => Array
        (
            [id] => 43
            [name] => 124
            [parentId] => 12
        )

)
TreeArray
(
    [2] => Array
        (
            [id] => 2
            [name] => Вася
            [parentId] => 0
        )

    [5] => Array
        (
            [id] => 5
            [name] => Петя
            [parentId] => 0
            [items] => Array
                (
                    [1] => Array
                        (
                            [id] => 1
                            [name] => 1231
                            [parentId] => 5
                        )

                    [4] => Array
                        (
                            [id] => 4
                            [name] => 21
                            [parentId] => 5
                        )

                )

        )

    [7] => Array
        (
            [id] => 7
            [name] => Саша
            [parentId] => 0
            [items] => Array
                (
                    [12] => Array
                        (
                            [id] => 12
                            [name] => 123123123
                            [parentId] => 7
                            [items] => Array
                                (
                                    [122] => Array
                                        (
                                            [id] => 122
                                            [name] => 122
                                            [parentId] => 12
                                        )

                                    [123] => Array
                                        (
                                            [id] => 4
                                            [name] => 123
                                            [parentId] => 12
                                        )

                                    [1122] => Array
                                        (
                                            [id] => 12
                                            [name] => 1122
                                            [parentId] => 12
                                        )

                                    [124] => Array
                                        (
                                            [id] => 43
                                            [name] => 124
                                            [parentId] => 12
                                        )

                                )

                        )

                )

        )

    [18] => Array
        (
            [id] => 18
            [name] => Коля
            [parentId] => 0
            [items] => Array
                (
                    [43] => Array
                        (
                            [id] => 43
                            [name] => 112
                            [parentId] => 18
                        )

                )

        )

)


Спустя 10 часов, 13 минут, 49 секунд (6.11.2009 - 13:19) sergeiss написал(а):
Цитата (glock18 @ 6.11.2009 - 03:27)
Смотрим решение (по мне, оно настолько изящно, насколько оно даже не могло быть)

Афигеть... И по сравнению с несколькими строками моего кода, ты считаешь этот код "изящным"??? biggrin.gif Тем более, что в нем отсутствует часть, загружающая данные из БД.

Так что ход не засчитан, засчитана только попытка wink.gif

Спустя 37 минут, 31 секунда (6.11.2009 - 13:57) Joker написал(а):
Вот перенс скрипт glock18 на базу.

Сам скрипт.
php
<?php 
mysql_connect('localhost','root1','root1');
mysql_select_db('test2');


$res = mysql_query("SELECT `id`,`name`,`parentId` FROM `table` WHERE `parentId`='1'");
$count = mysql_num_rows($res);

while($row = mysql_fetch_assoc($res))
{
$users[$row['id']] = $row;
}
$u = $users;
while ($count > 0)
{
$i++;
$order = '';
foreach ($u as $k => $v)
{
$order .= (empty($order))?NULL:",";
$order .= $v['id'];
}
$u = NULL;
$res = mysql_query("SELECT `id`,`name`,`parentId` FROM `table` WHERE `parentId` in (".$order.")");
$count = mysql_num_rows($res);
while($row = mysql_fetch_assoc($res))
{
$users[$row['id']] = $row;
$u[$row['id']] = $row;
}
}

// the next step: to place all items on their places.
// important to know the fact, that array elements are ordered in order, that were pushed in array
// tree level was increasing, so one iteration gonna be enough.

// that is really fast solution! and holds just a few lines

foreach($users as $id => &$user) // passing value by reference is important
{
if ($user['parentId'] == 1) // no parent, then pushing to the root of the tree
$tree[$id] =& $user; // however, do not forget to copy user by reference!
else
// that is all trickery. It comes up for any nesting level
// but do not require recursion, or even second loop through users array
// depends on that, we just copied variable above by reference!
// so we are still changing source array, but tree is also being changed!

$users[$user['parentId']]['items'][$id] = &$user;
}
// I seem, that is really fantastic solution. I was in luck anyway



echo '<pre>Tree';
print_r($tree);
echo '</pre>';
?>


Дамп базы.
dump_db
Цитата
--
-- Структура таблицы `table`
--

CREATE TABLE `table` (
  `id` int(10) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `parentId` int(10) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=8 ;

--
-- Дамп данных таблицы `table`
--

INSERT INTO `table` VALUES (2, '1', 1);
INSERT INTO `table` VALUES (3, '2', 1);
INSERT INTO `table` VALUES (4, '1.1', 2);
INSERT INTO `table` VALUES (5, '1.1.1', 4);
INSERT INTO `table` VALUES (6, '2.1', 3);
INSERT INTO `table` VALUES (7, '2.1.1', 6);


Результат выполнения скрипта.
result
Цитата
TreeArray
(
    [2] => Array
        (
            [id] => 2
            [name] => 1
            [parentId] => 1
            [items] => Array
                (
                    [4] => Array
                        (
                            [id] => 4
                            [name] => 1.1
                            [parentId] => 2
                            [items] => Array
                                (
                                    [5] => Array
                                        (
                                            [id] => 5
                                            [name] => 1.1.1
                                            [parentId] => 4
                                        )

                                )

                        )

                )

        )

    [3] => Array
        (
            [id] => 3
            [name] => 2
            [parentId] => 1
            [items] => Array
                (
                    [6] => Array
                        (
                            [id] => 6
                            [name] => 2.1
                            [parentId] => 3
                            [items] => Array
                                (
                                    [7] => Array
                                        (
                                            [id] => 7
                                            [name] => 2.1.1
                                            [parentId] => 6
                                        )

                                )

                        )

                )

        )

)

Спустя 34 минуты, 45 секунд (6.11.2009 - 14:32) glock18 написал(а):
sergeiss
сравни количество запросов уже вместо того, чтобы говорить, что это плохое решение.
подозреваю, что никто так и не понял что там делается. по крайней мере, кто-то сам мне это сказал, а кто-то сказал, что решение ужасно.

там половина места - комментарии.

самое малое количество допустимо, если бы можно было все выбрать разом.

Спустя 3 минуты, 50 секунд (6.11.2009 - 14:36) Joker написал(а):
Цитата (glock18 @ 6.11.2009 - 17:32)
подозреваю, что никто так и не понял что там делается.

что так сразу обобщать... я понел) и мне кстати понравился способ.

Кстати там используеться всего 3 запроса.

Спустя 11 минут, 54 секунды (6.11.2009 - 14:47) glock18 написал(а):
Цитата
что так сразу обобщать... я понел)

smile.gif
сорри. дело в том, что решение никак нельзя назвать "попыткой". тем более по сравнению с тем ужасом, предполагающими n запросов при построении дерева, где n - количество узлов.

Спустя 3 часа, 31 минута, 39 секунд (6.11.2009 - 18:19) sergeiss написал(а):
Вот когда код показываешь (который должен быть рабочий, хотя я самолично и не проверял), а не голословно утверждаешь - это другое дело wink.gif

Спустя 5 минут, 56 секунд (6.11.2009 - 18:25) glock18 написал(а):
он рабочий.

Цитата
хотя я самолично и не проверял

именно следовало проверить

Спустя 1 час, 10 минут, 26 секунд (6.11.2009 - 19:35) Soldier Ghost написал(а):
Народ, да ладно вы забейте smile.gif не хочу чтоб из-за моего топика люди сорились huh.gif

Спустя 1 час, 31 минута, 57 секунд (6.11.2009 - 21:07) Joker написал(а):
Цитата (Soldier Ghost @ 6.11.2009 - 22:35)
не хочу чтоб из-за моего топика люди сорились

Да тут вроде не кто и не сорился.... я бы сказал что это уже типичная ситуация для этого форума просто эмоциональное обсуждение.

Спустя 26 минут, 46 секунд (6.11.2009 - 21:34) sergeiss написал(а):
Цитата (glock18 @ 6.11.2009 - 19:25)
именно следовало проверить

Да я верю тебе и Джокеру smile.gif

Тем более, что тут участвует MySQL, а у меня его нету на компе smile.gif Только хэлп по нему остался wink.gif

Цитата (Soldier Ghost @ 6.11.2009 - 20:35)
не хочу чтоб из-за моего топика люди сорились

А мы, вроде как, и не ссорились??? Или я что-то пропустил biggrin.gif

Спустя 4 часа, 4 минуты, 18 секунд (7.11.2009 - 01:38) Soldier Ghost написал(а):
Да фиг его знает вы чёто так спорили я думал щас подерётесь smile.gif


_____________
Schecter damien 6 FR
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.