|
|
|
|
|
для: sim5
(13.12.2007 в 20:57)
| | Функция называется рекурсивной, если во время ее обработки возникает ее повторный вызов, либо непосредственно, либо косвенно, путем цепочки вызовов других функций. | |
|
|
|
|
|
|
|
для: Port_Artur1
(13.12.2007 в 20:43)
| | Если вы не понимаете рекурсии, делайте выборку родителей, их потомков, забирайте записи у этих потомков. Это можете сделать последовательно, это вам понятно будет?
PS. Точно, перепутал кое что, кое с чем, если еще не читали до постскрипт, не обращайте внимания, это я про себя, так как удалил немного из своего ответа. :) | |
|
|
|
|
|
|
|
для: sim5
(13.12.2007 в 20:33)
| | Блин а кто может объснить? | |
|
|
|
|
|
|
|
для: Port_Artur1
(13.12.2007 в 20:21)
| | Если вы не понимаете сути рекурсивного вызова, забудтьте тогда об этом, иначе если у вас будут несколько другие данные, вы опять ничего не сможете сделать. Делайте вместо рекурсии несколько запросов к базе и стройте дерево так, как это понятно вам. | |
|
|
|
|
|
|
|
для: sim5
(13.12.2007 в 19:52)
| |
while($row = mysql_fetch_assoc($res)){
$tree[$row[ParentID]][$row[ID]] = $row[Title];
}
|
Чтобы посмотреть что же лежит в массиве можно просто выполнить print_r($tree) и будет вам счастье! Для чего я заделал $row[ID] на второй уровень? Для связи с ParentID, действуем таже как если бы мы просто выполняли запросы в рекурсии, но мы же орудуем массивами...
function ShowTree($tree, $pid=0){
echo <ul type=square>;
foreach( $tree as $id=>$root){
if($pid!=$id)continue;
if(count($root)){
foreach($root as $key => $title){
echo <li>{$title};
if(count($tree[$key]))ShowTree($tree,$key);
}
}
}
echo </ul>;
}
|
foreach( $tree as $id=>$root) - блин не пойму смысл массив то двухмерный что тогда $id и $root | |
|
|
|
|
|
|
|
для: Port_Artur1
(13.12.2007 в 19:49)
| | Если вы о статье по ссылке, то куда уж подробнее, да там и не только слова, но и пример. | |
|
|
|
|
|
|
|
для: sim5
(13.12.2007 в 17:47)
| | Блин а можно на словах подробнее чото я не совсем точнее совсем ничегоне понял (ну бывает и такое) | |
|
|
|
|
|
|
|
для: Port_Artur1
(13.12.2007 в 16:50)
| | Ну тогда не знаю, что и сказать, если не понимаете. Но вот так хотя бы, может это яснее будет.
PS. Вопрос (попутно) для cheops || Trianon: читал о рекурсивных запросах в SQL Server, типа:
WITH
tree (data, id)
AS (SELECT VHC_NAME, VHC_ID_FATHER
FROM T_VEHICULE
WHERE VHC_NAME = 'MOTORCYCLE'
UNION ALL
SELECT VHC_NAME, VHC_ID_FATHER
FROM T_VEHICULE V
INNER JOIN tree t
ON t.id = V.VHC_ID) SELECT *
FROM tree
|
а в MySQL подобное не планируется? | |
|
|
|
|
|
|
|
для: sim5
(13.12.2007 в 16:40)
| | А можно суть идеи
А то в Яндексе нашёл только определения, а шо это такое так и не понял - первый раз вообще такое слышу. | |
|
|
|
|
|
|
|
для: Port_Artur1
(13.12.2007 в 16:36)
| | Использовать рекурсивный вызов. | |
|
|
|
|