|
|
|
|
|
для: Trianon
(25.07.2009 в 10:56)
| | Спасибо!
Сейчас буду разбираться. | |
|
|
|
|
|
|
|
для: Eugene77
(25.07.2009 в 08:50)
| |
<?php
require_once('dbconfig.php');
function level($list, $tree, $id)
{
echo "<blockquote> ". $list[$id]['name'];
if(isset($tree[$id]))
for($n=count($tree[$id]), $i = 0; $i < $n; $i++)
level($list, $tree, $tree[$id][$i]);
echo "</blockquote>";
}
$tree = array(); $list = array();
$query = " SELECT id, parent_id, name FROM tbl order by id";
if(($res=mysql_query($query)) != 0)
while(($row=mysql_fetch_ASSOC($res)) != 0)
{
$list[$row['id']] = $row;
list($id, $parent_id) = array($row['id'],$row['parent_id']);
$tree[$parent_id][] = $id;
}
level($list, $tree, 1);
?>
|
<?php
require_once('dbconfig.php');
function makearr($list, $tree, $id)
{
$v = array();
if(isset($tree[$id]))
for($n=count($tree[$id]), $i = 0; $i < $n; $i++)
{
$key = $tree[$id][$i];
$v[$list[$key]['name']] = makearr($list, $tree, $key);
}
return $v;
}
$tree = array(); $list = array();
$query = " SELECT id, parent_id, name FROM tbl order by id";
if(($res=mysql_query($query)) != 0)
while(($row=mysql_fetch_ASSOC($res)) != 0)
{
$list[$row['id']] = $row;
list($id, $parent_id) = array($row['id'],$row['parent_id']);
$tree[$parent_id][] = $id;
}
$arr = makearr($list, $tree, 1); unset($list); unset($tree);
echo "<pre>"; print_r($arr); echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.07.2009 в 23:43)
| | >Вот. Смотрите внимательно.
>http://softtime.ru/forum/read.php?id_forum=3&id_theme=13924
>
Да, признаю, что для рекурсивного обхода дерева, массив совсем не обязательно делать древовидным. Ваше решение проще. А моя идея соответствия структуры данных и структуры массива должна была для вас выглядеть надуманной. Просто я не такой опытный программист...
>Простите, то, что Вы так считаете, конечно, позволяет Вам на них не отвечать.
>Но тогда какой смысл ждать ответ от меня? Я-то их пустыми не считаю.
>
Я это понимаю. Поэтому отвечаю, но предупреждаю вас, что обсуждение заходит в ту область, которая для меня значения не имеет.
>Так трудно нарисовать
INSERT INTO tbl (id, parent_id, name) VALUES
(1, 0, 'Растения'),
(2, 1, 'Деревья'),
(3, 2, 'Дубы'),
(4, 1, 'Кусты'),
(5, 4, 'Малина'),
(6, 5, 'Малина садовая'),
(7, 5, 'Малина домашняя')
|
>
>Я вот в упор не понимаю, почему это должен делать я, в то время, когда потребность в знаниях испытываете Вы!
Ну, это да. Если нарисовать - это сэкономит минутку вашего времени. Буду приводить образец готового дампа.
Теперь вопрос, получается, потерял практическое значение для меня.
Но осталось желание посмотреть образец качественно написанного кода.
Возможно ли создать именно древовидный массив без такого громоздкого кода как сочинил я? Мне бы очень хотелось взглянуть как вы там будете передавать ссылки!
Спасибо за во многом справедливую критику! | |
|
|
|
|
|
|
|
для: Eugene77
(24.07.2009 в 16:14)
| | >Меня самого удивило, что то что вы предложили вы считаете древовидной структурой массива (речь идёт о теме на которую вы ссылались).
Вот. Смотрите внимательно.
http://softtime.ru/forum/read.php?id_forum=3&id_theme=13924
>
>>Теперь Вы пишете, что Вас оказывается не создание массива интересует, а выбор структуры таблицы, хотя их всего-то раз, два и три. И все детально описаны.
>
>Про выбор структуры таблицы я создавал отдельную тему, но так ничего и не взял из неё.
>Ну, и остановился на самом простом. Именно поэтому я сделал вывод, что со структурой таблицы разночтений не будет и именно поэтому считаю ваши уточняющие вопросы пустыми.
Простите, то, что Вы так считаете, конечно, позволяет Вам на них не отвечать.
Но тогда какой смысл ждать ответ от меня? Я-то их пустыми не считаю.
>>Вы смерти моей хотите чтоли?
>
>Я не могу ещё более конкретизировать вопрос имея перед собой свою задачу.
>Какой мне нужен массив? Да любой,
Да Вы его уже привели.
Так трудно нарисовать
INSERT INTO tbl (id, parent_id, name) VALUES
(1, 0, 'Растения'),
(2, 1, 'Деревья'),
(3, 2, 'Дубы'),
| (и т.д.) ?!
Я вот в упор не понимаю, почему это должен делать я, в то время, когда потребность в знаниях испытываете Вы! | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2009 в 10:08)
| | >Вы задали базовый вопрос- как таблицу перегнать в массив. Быстро и аккуратно.
>Я удивился вопросу (вроде не Ваш уровень) , но показал - как.
>Вместо того, чтобы , как Вы пишете, догадаться, Вы стали юлить и сетовать на то, де, что вот массив нужен не такой, а другой.
Меня самого удивило, что то что вы предложили вы считаете древовидной структурой массива (речь идёт о теме на которую вы ссылались).
>Теперь Вы пишете, что Вас оказывается не создание массива интересует, а выбор структуры таблицы, хотя их всего-то раз, два и три. И все детально описаны.
Про выбор структуры таблицы я создавал отдельную тему, но так ничего и не взял из неё.
Ну, и остановился на самом простом. Именно поэтому я сделал вывод, что со структурой таблицы разночтений не будет и именно поэтому считаю ваши уточняющие вопросы пустыми.
>Вы смерти моей хотите чтоли?
Я не могу ещё более конкретизировать вопрос имея перед собой свою задачу.
Какой мне нужен массив? Да любой, но чтобы его можно было обходить ветку за веткой. Только и всего. А какая структура в РНР этому соответствует? Вы много знаете? Я - только одну, если не считать отличия в концах веточек, которые вы назвали ортогональностью. Но любые отличия на кончиках массива для меня значения не имеют. Да и вообще для практики их значение будет минимально. Так что мне кажется, что несмотря на краткость формулировки, задача вполне определена (мы говорим о теме, на которую вы сослались). То есть любое решение, предложенное с вашей стороны, удовлетворит мой интерес.
Тут два варинта: либо вы не хотите это замечать упираясь в "педагогические соображения",
либо я что-то глубоко не понимаю в древовидной структуре. Ну, тогда - поясните, какие тут могут быть ещё варианты, мною не замеченные. | |
|
|
|
|
|
|
|
для: Eugene77
(24.07.2009 в 10:04)
| | Из всего этого ясно другое. А именно, что Вас что-то интересует, но Вы не пытаетесь приложить даже минимума усилий, чтобы понятно объяснить, что именно.
Этот подход ("а чо думать-то? Спрошу - а там разберутся") виден во всех ваших постах.
И поэтому, не смотря на Ваш достаточно высокий , по сравнению с местным большинством, уровень, учить Вас чему-либо не тянет никогда. | |
|
|
|
|
|
|
|
для: Eugene77
(24.07.2009 в 09:28)
| | Вы задали базовый вопрос- как таблицу перегнать в массив. Быстро и аккуратно.
Я удивился вопросу (вроде не Ваш уровень) , но показал - как.
Вместо того, чтобы , как Вы пишете, догадаться, Вы стали юлить и сетовать на то, де, что вот массив нужен не такой, а другой.
Теперь Вы пишете, что Вас оказывается не создание массива интересует, а выбор структуры таблицы, хотя их всего-то раз, два и три. И все детально описаны.
Вы смерти моей хотите чтоли? | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2009 в 09:56)
| | Из всего этого ясно, что меня интересует любой разумный метод работы с иерархией,
а вы либо не знаете, либо не хотите предложить ни одного.
(Я не говорю о избыточных структурах таблиц. Тут ссылку на них уже давали.)
В принципе, я и предполагал, что этим дело закончится. | |
|
|
|
|
|
|
|
для: Eugene77
(24.07.2009 в 09:28)
| | Вы привели одну структуру (23.07.2009 в 09:50). Я - другую (23.07.2009 в 11:17) .
Потом Вы пишете, что ошиблись, и что работаете с "именно такой" структурой (23.07.2009 в 12:24), не уточнив, $лять, с какой именно.
Но подтверждаете, что тоже считаете их разными (23.07.2009 в 12:26) .
На мой уточняющий вопрос - с какой же именно структурой (23.07.2009 в 12:28) Вы работаете, Вы отвечаете - да! (24.07.2009 в 09:28)
При всей абсурдности разговора, в нем остается одно более менее вменяемое место:
Мы говорим об разных структурах массива, но одной методике хранения данных в таблице.
И о соответствии одного другому.
и тут я читаю (24.07.2009 в 08:48) где внезапно оказываются две таблицы.
Идите-ка Вы в жопу.... | |
|
|
|
|
|
|
|
для: Trianon
(23.07.2009 в 12:28)
| | >Именно какой?
Да.
Мне кажется, что вы напрасно задаёте так много уточняющих вопросов:
Если вы знаете другую более удобную неизбыточную структуру таблицы для хранения данных древовидной структуры, то давно бы её привели.
Если ВЫ такой таблицы не знаете, то почему возникают сомнения что мы говорим о разном?
Если предположить, что я не догадался до этой структуры, то я "догадаюсь" о ней по вашему ответу. | |
|
|
| |
|