Показать полную графическую версию : Помогите с созданием древовидной базы данных
Здраствуйте.
Нужно на PHP + MySQL создать древовидную базу данных с возможностью просмотра, а так же изменения и редактирования по паролю.. Так как я новичок в этой области, то подскажите пожалуйтса действительно полезеные статьи и учебные материалы. А то скачивать и рыться в толстенных книгах как то не очень хочеться.
Заранее спасибо ! )
ssdm
для реализации древообразной структуры очень советую почитать статьи на тему - деревья nested sets. Почитайте теорию. Если будут вопросы по реализации - задавайте, у меня были работающие варианты для mysql.
Если же вложение неглубоко и детерминировано, могу посоветовать вариант с рангами (в смысле могу описать и найти свои старые статьи)
ssdm
древовидная БД - эта такая, в которой у каждой записи есть 2 обязательных параметра: id(id# элемента) и up_id(id# элемента, стоящий выше уровнем). Тогда можно вот такое:
id|up_id| data
0 | 0 | корень
1 | 0 | ветвь1
2 | 1 | ветвь1->ветвь2
3 | 0 | ветвь3
обозначает дерево:
корень
| \
ветвь1 ветвь3
|
ветвь2
условимся что если id = up_id - это корень.
Выборка всех элементов под ветвью с id=0:
SELECT * FROM `drevoidnaya_tabl` WHERE up_id = 0;
Просмотр дерева до элементN:
$target="элементN";
$sqlres=mysql_fetch_assoc(mysql_query("SELECT * FROM `drevoidnaya_tabl` WHERE data = ".$target.";"));
$way[0]=$sqlres['up_id'];
if($way[0]==$sqlres['id']){
echo($way[0]);
die;
}
while($sqlres['id']!=$sqlres['up_id']){
// $way[]=$sqlres['data']; //лог, если он - нужен foreach для вывода
echo($sqlres['data']."<br />\n"); //вывод
$sqlres=mysql_fetch_assoc(mysql_query("SELECT * FROM `drevoidnaya_tabl` WHERE id = ".$sqlres['id'].";"));
}
Это можно упростить, если в каждый элемент добавлять путь до него.
Скрипты примерные, если не работают - подгоняй напильником ;)
Дальше сделаешь сам :)
mar,Arrest спасибо за помощь... решил использовать nested sets.
Правда в процессе работы возник такой глупый вопрос: как нажав на кнопку(не форму) заставить выподняться какой нить PHP - блок?
возник такой глупый вопрос: как нажав на кнопку(не форму) заставить выподняться какой нить PHP - блок?
если честно, вопрос просто непонятен :)
сли честно, вопрос просто непонятен
:) да вроде уже сам разобрался )
Другой вопрос : в файле index.php я создаю соединение с БД $db=mysql_connect("localhost","root");, далее выполняеться файл 1.php. Надо создавать новое соединение с БД? Если да , то что делать со старым?
если новый файл включен в первый, то ничего создавать не надо.
Соединение закрывают командой: mysql_close($db);
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC