Вот где собака зарыта:
http://myphp.net.ru/lessons/index.php?18 изучать придется долго!!!
-~{}~ 09.12.04 16:45:
Мои доводы по данному примеру я написал ниже после примера
*************************************************
CREATE TABLE catalogs (
cat_id int(11) NOT NULL auto_increment,
parent_id int(11) NOT NULL default '0',
cat_name varchar(200) NOT NULL default '',
PRIMARY KEY (cat_id)
)
Вставим в полученную таблицу несколько записей:
// функция для вставки записей в MySQL
function sql_insert($parent_id, $cat_name) {
$query = "INSERT INTO catalogs(parent_id, cat_name) VALUES('".(int)$parent_id."', '$cat_name')";
mysql_query($query) or die(mysql_error());
return mysql_insert_id(); // возвращаем id внесенной записи
}
// соединение и выбор базы данных рассматривать не будем
$level[1][0] = sql_insert("0", "Программирование");
$level[2][0] = sql_insert($level[1][0], "Веб программирование");
$level[2][1] = sql_insert($level[1][0], "Системное программирование");
$level[3][0] = sql_insert($level[2][0], "PHP");
$level[3][1] = sql_insert($level[2][0], "Perl");
$level[3][2] = sql_insert($level[2][1], "C++");
$level[4][0] = sql_insert($level[3][2], "Visual C++");
$level[3][3] = sql_insert($level[2][1], "Delphi");
// Вторая ветвь
$level[1][1] = sql_insert("0", "Базы данных");
$level[2][2] = sql_insert($level[1][1], "MySQL");
$level[2][3] = sql_insert($level[1][1], "Oracle");
$level[2][4] = sql_insert($level[1][1], "MS Access");
Теперь выведем полученное дерево:
function get_tree($parent_id = 0, $prefix = "") {
global $out;
$query = "SELECT * FROM catalogs WHERE parent_id = '$parent_id'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$out .= $prefix.$row['cat_name']."<br>";
get_tree($row['cat_id'], $prefix." ");
}
return $out;
}
echo get_tree();
Так как мы имеем многоуровневое дерево, функцию get_tree() нам приходся вызывать рекурсивно, для одноуровневых деревьев (не больше одного уровня вложенности) этого не требуется.
Как видите, алгоритм построения такого рода деревьев очень прост.
К достоинствам данного метода построения деревьев можно отнести то, что каждый элемент дерева обладает достаточной степенью обособленности, так как с родителем его связывает значение только одного поля, которое мы без проблем можем изменить и элементарно поменять тем самым родителя. К недостаткам же - крайне неудобную работу при высоких уровнях вложенности. Так что этот алгоритм оптимально подходит для одноуровневых деревьев и деревьев с невысоким уровем вложенности (2 - 3 уровня).
**************************************************
Короче говоря принялся изучать, но не чего не понял, ретранслирую текст выше.
я создаю одну таблицу с полями:
cat_id int(11) NOT NULL auto_increment,
parent_id int(11) NOT NULL default '0',
cat_name varchar(200) NOT NULL default '',
PRIMARY KEY (cat_id)
И что далее? каждый раздел это новая таблица?
Как вводить новые катогории???
естественно как оформлять админство в обсуждении не нуждается.
Но я себе вижу его так:
Введи название категории -> категория такаято создана, далее выводятся поля для заполнения товаров в данной категории, код, название итд.
в результате мне нужно выводить только те товары которые пренадлежать к данной категории.
я заполняю поля нажимаю добавить, и все готово, введен товар который пренадлижит к данной категории введен в базу.
Непонятно одно как это реализуется!!! Создаются несколько таблиц или одна из которой в последствии нужно выводить данные соответсвующие значению поля с названием категории...
Блин народ помогите, запарился уже!!!!!