|
|
|
| создаю два массива из стандартнго вида таблицы (id_catalog, name, id_parent)
как оператором лутьше рганизовать разбор массивов!
направте плиз на путь истинный
пробовал foreach но что то не выходит постоянно ловлю себя на мысли что изобретаю велосипед!
сначало хотелось бы разобраться с итерационным методом а пот. с рекурсивным
прилагаю код:
<?
$SQL="SELECT id_strana, id_parent, strana FROM strana ORDER BY strana";
$res = mysql_query($SQL) or die("Error in $sql: ".mysql_error());
$tree = array(); $names = array();
while($row = mysql_fetch_row($res))
{
list($id, $parent, $name) = $row;
$tree[$parent][] = $id;
$names[$id] = $name;
}
$id_cat = $_GET['id_cat'];
foreach ($tree[0] AS $znach)
{
echo "<a href=\"3.php?id_cat=".$znach."\">".$names[$znach]."</a><br>";
if(!empty($tree[$znach]) && isset($_GET['id_cat']) && in_array($tree[$id_cat],$tree))
{
foreach ($tree[$id_cat] as $znach_2)
{
echo "<a href=\"3.php?id_cat=".$znach."&id_cat2=".$znach_2."\">".$names[$znach_2]."</a><br>";
}
}
}
?>
|
взят с этого же форума но развите это задачи не нашел.
заранее благобдарю! | |
|
|
|
|
|
|
|
для: tauruz
(19.11.2006 в 21:47)
| | А что Вы хотите получить в результате?
В принципе, можно реализовать обход дерева вообще не применяя рекурсию, только код будет крайне сложным и запутанным. Зачем?
Что мне всегда казалость странным...
Есть задачи, которые решать с применением рекурсии - преступление. То же самое вычисление факториала. Или, допустим, нахождение обратного пути в каталоге, хранимом в виде id_cat, id_parent. И тем не менее, постоянно решают и в пример приводят....
И точно также есть задачи, которые совершенно противоестественно решать без применения рекурсии. Вроде этой (обхода дерева в глубину.) И ведь тоже почему-то решают... | |
|
|
|
|
|
|
|
для: Trianon
(20.11.2006 в 09:53)
| | По умолчанию выводятся все корневые категории которые являються ссылками на дочерние.
Нажав на ссылку кореннгого кталога под ним должны выводиться дочерние, нажав на дочернюю выводятся поддочерние и т.д.
В принципе 3-ех уровней достатточно. | |
|
|
|
|
|
|
|
для: Trianon
(20.11.2006 в 09:53)
| | ну вот вроде сообразил!!
<?
$SQL="SELECT id_strana, id_parent, strana FROM strana ORDER BY strana";
$res = mysql_query($SQL) or die("Error in $sql: ".mysql_error());
$tree = array(); $names = array();
while($row = mysql_fetch_row($res))
{
list($id, $parent, $name) = $row;
$tree[$parent][] = $id;
$names[$id] = $name;
}
$id_cat = $_GET['id_cat'];
catalog(0,$tree,$names);
function catalog($id,$tree,$names)
{
global $id_cat;
foreach ($tree[$id] AS $znach)
{
echo "<a href=\"3.php?id_cat=".$znach."\">".$names[$znach]."</a><br>";
if(!empty($id_cat) && in_array($tree[$znach],$tree) && $znach == $id_cat){
catalog($znach,$tree,$names);
}
}
}
?>
|
по моему всеравно громоздко!!!
подскажите как теперь к дочерним ссылка прикрутить id_cat2, id_cat3
так что бы в корне ссылки имели вид:
id_cat=1
id_cat=2 и т.д.
а дочерние
id_cat=1&id_cat2=6
id_cat=2&id_cat2=7
вроде понятно
Заранее спасибо | |
|
|
|
|
|
|
|
для: tauruz
(21.11.2006 в 00:29)
| | Непонятно лишь - зачем. id объекта односзначно определяет id его родителя. А Вы провоцируете ситуацию, когда на вход скрипту придет id_cat=1&id_cat2=7. | |
|
|
|