|
|
|
|
|
для: cheops
(03.10.2005 в 16:22)
| | Спасибо ОГРОМНОЕ!!! Видимо тот кто сказал: "Все гениальное просто", тоже мучился с функциями :). У Вас код по размеру вдвое меньше моего. Я даже не знал, что можно так ловко. Еще раз спасибо, Вам надо памятник при жизни поставить. | |
|
|
|
|
|
|
|
для: Ziq
(03.10.2005 в 15:48)
| | Вот ваша функция
<?php
include "config.php";
// Функция для выведения раздел любой вложенности из БД
// Значения переменных
// $prioritet - позиция элемента, который сейчас проверяется
// $id_parent - внутри какого раздела искать 0 - самый верхний
echo "<pre>";
category(0,-1);
echo "</pre>";
function category($id_parent,$level=0)
{
// Устанавливаем уровень
$level++;
$query = "select * from dev_category
where id_parent = $id_parent
order by prioritet";
$myq = @mysql_query($query);
if(!$myq) exit(mysql_error());
// Если найдена хоть одна запись - выводим данные
if(mysql_num_rows($myq)>0)
{
while($fet = mysql_fetch_array($myq))
{
$id_category = $fet['id_category'];
$category = $fet['category'];
$id_parent = $fet['id_parent'];
$id_status = $fet['id_status'];
if ($GLOBALS['category_select'] == $id_category) $sele = "selected";
$GLOBALS['a_parent'][$id_parent] = $id_parent;
// Выводим запрос
echo "<option value='$id_category' $sele>".str_repeat("-",$level)."> $category</option>\n";
// Осуществляем рекурсивный вызов для вывода
// подчинённых записей
category($id_category, $level); // Опускаемся на уровень ниже
}
}
}
?>
|
PS Старайтесь избегать более одного рекурсивного вызова и более 3-х вложенных друг в друга фигурных скобок - иначе вас впереди будут ждать недели отладки :))) | |
|
|
|
|
|
|
|
для: cheops
(03.10.2005 в 14:32)
| | Объясняю. Функция предназначена для вывода структуры сайта в виде <select> т.е. так
<select name="name">
<option value="id_razd">>$name_razd</option>
<option value="id_razd">->$name_razd</option>
<option value="id_razd">->$name_razd</option>
<option value="id_razd">-->$name_razd</option>
<option value="id_razd">>$name_razd</option>
</select>
|
> Означает, что этот раздел находиться на самом верхнем уровне. Чем больше "-" тем ниже уровень. Может, что еще не понятно, потому что без Вашей помощи вряд ли что получиться, так как я уже несколько дней парюсь.
Заранее огромное спасибо. | |
|
|
|
|
|
|
|
для: Ziq
(02.10.2005 в 21:01)
| | Не очень понятно, что функция делает - каково её назначение? | |
|
|
|
|
|
|
|
для: cheops
(02.10.2005 в 20:03)
| | На привязку пока не смотрите, если избавить функцию от того, чтобы она требовала уникальности поля prioritet, то все станет на свои места. | |
|
|
|
|
|
|
|
для: Ziq
(02.10.2005 в 19:39)
| | Всё равно не понимаю зачем привязка к 10 - я изменил их на 10, 20, 30 на 1, 2, 3 - всё работает... | |
|
|
|
|
|
|
|
для: Ziq
(02.10.2005 в 15:32)
| | Может что-то непонятно в уже написанном коде? | |
|
|
|
|
|
|
|
для: cheops
(02.10.2005 в 14:00)
| | category(0,0); | |
|
|
|
|
|
|
|
для: Ziq
(02.10.2005 в 06:56)
| | Так а с какими значениями в первый раз функцию вызывать? | |
|
|
|
|
|
|
|
для: cheops
(01.10.2005 в 23:23)
| | Я Вам по почте переслал дамп (оригинал), не хотелось бы, чтобы он стал достоянием общественности, в целях безопасности.
Заранее огромное спасибо за помощь. | |
|
|
|
|