в главном меню, вместо "опросов"

==========
критика - приветствуется.
Модератор: f0s
Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу, откуда взяли.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Время генерации страницы 0.459 секунд
Из них PHP: 29%; SQL: 71%; Число SQL-запросов: 75 шт.
Исходный размер: 33202; Сжатая: 11034
Это нафиг не нужно.Мы — долго запрягаем, быстро ездим, и сильно тормозим.
http://www.lissyara.su —> статьи —> FreeBSD —> Security —> Бронированный FreeBSD
Код: Выделить всё
CVSup
начальная настройка
Установка FreeBSD
DUMMYNET
Сборка ядра
IPFW
portupgrade
обновление
portsnap
CP1251 на FreeBSD
loader.conf
defaults/rc.conf
diskless
jail
Ntpdate/Ntpd
Обновление мира ("world")
PBR & PF
bsnmpd
newsyslog
if_bridge
make.conf
PBR & IPFW
Работа с HDD
Код: Выделить всё
bsnmpd
CP1251 на FreeBSD
CVSup
defaults/rc.conf
diskless
DUMMYNET
if_bridge
IPFW
jail
loader.conf
make.conf
newsyslog
Ntpdate/Ntpd
PBR & IPFW
PBR & PF
portsnap
portupgrade
начальная настройка
обновление
Обновление мира ("world")
Работа с HDD
Сборка ядра
Установка FreeBSD
+1 Пожелание сортануть меню по алфавиту полностью поддерживаю. Хотя и пользую lissyara's syte reader from Urgor2. а низзя ли сортануть по алфовиту статьи? искать просто проще...
непонял...Urgor писал(а):Эта пять! То очем так долго говорили -- свершилось!
А нижний банер.... гм. IMHO функцию печати будут применять не для расклейки статей, на улицах города![]()
ОК. тогда сделаю страничку со списком статей, типа как у автораUrgor писал(а):+1 Пожелание сортануть меню по алфавиту полностью поддерживаю. Хотя и пользую lissyara's syte reader from Urgor2. а низзя ли сортануть по алфовиту статьи? искать просто проще...
Как коптерка старшины?lissyara писал(а):А утром смотрю и непонимаю - как оно работает..
с тех пор пару раз пытался понять - но ниасилил... чёрная дыра короче![]()
Код: Выделить всё
$left_menu = "";
$part2_sql_query = "";
// последовательный перебор разделов (1 --> 6), до тех пор,
// пока не найдём уровень в котором встречается этот раздел
//echo "раздел из страницы = " . $massiv_page_text['rzd'] . "<br>\n";
$i = 0;
while($i++ < 6){
$sql_query = "SELECT * FROM `razdel_table` WHERE `rzd_" . $i . "`='" . $massiv_page_text['rzd'] . "' LIMIT 1";
//echo "кверя поиска раздела = " . $sql_query . "<br>\n";
$massiv_rzd_i = mysql_fetch_array(main_sql_query("$sql_query"));
$key = "rzd_" . $i;
//echo "i = " . $i . "ключики поиска раздела = " .$key . "<br>\n";
//echo "массив раздела по ключу = " . $massiv_rzd_i[$key] . "<br>\n";
if($massiv_rzd_i[$key] == $massiv_page_text['rzd']){
$rzd_uroven = $i;
$i = 7;
}
unset ($sql_query);
unset ($massiv_rzd_i);
unset ($key);
//echo $i . " ";
}
//echo "уровеань раздела в left_menu.php = " . $rzd_uroven . "<br>\n";
// определяем является ли страница индексной страницей какого-либо раздела
$massiv_rzd = mysql_fetch_array(main_sql_query("SELECT * FROM `razdel_table` WHERE `id_index_pade_rzd`='$id'"));
if($massiv_rzd['rzd_1'] != false){
// это индексная страница
$indx_page_curr_rzd = $id;
$index_top_rzd = $id;
}else{
// это не индексная страница
// определяем индексную страницу этого раздела
// вводим часть запроса где раздел и его уровень
$part1_sql_query = "rzd_" . $rzd_uroven . "='" . $massiv_page_text['rzd'] . "'";
// вводим вторую часть запроса, где определяем нулевые разделы
$i = $rzd_uroven;
while($i++ < 6){$part2_sql_query = $part2_sql_query . " AND `rzd_" . $i . "`='0' ";}
// составляем сам запрос
$sql_query = "SELECT `id_index_pade_rzd` FROM `razdel_table` WHERE " . $part1_sql_query . $part2_sql_query;
// делаем запрос на раздел к которому относится страница
$massiv_rzd_i = @mysql_fetch_array(main_sql_query("$sql_query"));
unset ($part1_sql_query);
unset ($part2_sql_query);
unset ($sql_query);
$indx_page_curr_rzd = $massiv_rzd_i['id_index_pade_rzd'];
$index_top_rzd = $massiv_rzd_i['id_index_pade_rzd'];
unset ($massiv_rzd_i);
}
/*
echo "раздел = " . $massiv_page_text['rzd'] . ", уровень раздела =
" . $rzd_uroven . ", индексная страница = " . $indx_page_curr_rzd . ",
текущая страница = " . $id . "<br>\n";
*/
// достаём из таблицы разделов все страницы с разделом втрого уровня = разделу второго уровня текущей страницы
// достаём собственно список разделов текущего раздела :)
$razdeli_indeksnoy_stranitsi = mysql_fetch_array(main_sql_query("SELECT * FROM `razdel_table` WHERE `id_index_pade_rzd` = '" . $indx_page_curr_rzd . "'"));
// достаём из таблицы разделов все страницы с разделом втрого уровня = разделу второго уровня текущей страницы
// и при этом являющихся индексными для других разделов
$sql_2 = main_sql_query("SELECT * FROM `razdel_table` WHERE `rzd_2` = '" . $razdeli_indeksnoy_stranitsi['rzd_2'] . "' AND `rzd_4` = '0' AND `rzd_5` = '0' AND `rzd_6` = '0'");
// пробегаемся по массиву и последовательно вытаскиваем пункты меню
while ($d_2 = mysql_fetch_assoc($sql_2)){
// запрос к БД самого сайта на построение меню - нужны заголовок и примечание
$sql_2_site = mysql_fetch_array(main_sql_query("SELECT `rzd`,`zagolovok_menu`, `descriptions`,`vizible` FROM `site_table` WHERE `id`='" . $d_2['id_index_pade_rzd'] . "' ORDER BY `id`"));
// если страница видимая (не нулю равен `визибле`)
if($sql_2_site['vizible'] !== '0'){
// если это индексная страница этого уровня раздела - то её не выводим
// ломимся снова в таблицу разделов - смотрим индексная ли это страница раздела
$sql_2_site_indx_rzd = mysql_fetch_array(main_sql_query("SELECT `id_index_pade_rzd` FROM `razdel_table` WHERE `id_index_pade_rzd` = '" . $d_2['id_index_pade_rzd'] . "' AND `rzd_3` = '0' AND `rzd_4` = '0' AND `rzd_5` = '0' AND `rzd_6` = '0'"));
if($d_2['id_index_pade_rzd'] == $sql_2_site_indx_rzd['id_index_pade_rzd']){
// ничё не делаем
}else{
// иначе - строим строку меню
// теперь надо посмотреть не для того ли раздела мы строили строку, в котором сейчас находимся, и если так оно и есть -
// надо строить выпадающее подменю...
if($razdeli_indeksnoy_stranitsi['rzd_3'] == $sql_2_site['rzd']){
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD height=\"20\" align=\"left\" class=\"current\" onmouseover=\"this.style.cursor='hand';\" onclick=\"window.location.href('./?id=" . $d_2['id_index_pade_rzd'] . "')\"><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($sql_2_site['descriptions']) . "\" href=\"./?id=" . $d_2['id_index_pade_rzd'] . "\">" . htmlspecialchars($sql_2_site['zagolovok_menu']) . "</a>\n</CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
// меню построили, выпало :)
// если следующий уровень разделов = 0, то это конец меню, и надо вывести все страницы этого раздела
if($razdeli_indeksnoy_stranitsi['rzd_4'] == false){
$curr_razdel_pages_2 = main_sql_query("SELECT `id`, `zagolovok_menu`, `descriptions`, `vizible` FROM `site_table` WHERE `rzd` = '$razdeli_indeksnoy_stranitsi[rzd_3]' ORDER BY `id`");
while ($pages_2 = mysql_fetch_assoc($curr_razdel_pages_2)){
// если это таже страница, для которой строится подменю, то её не выводим
if($d_2['id_index_pade_rzd'] !== $pages_2['id']){
// если `visible` не равно нулю - выводим в меню
if($pages_2['vizible'] == '1'){
// раскрашиваем текущий пункт меню
if($pages_2['id'] == $id){$menu_color = "class=\"current\" onmouseover=\"this.style.cursor='hand';\" onclick=\"window.location.href('./?id=" . $pages_2['id'] . "')\"";}else{$menu_color = "class=\"hilightoff\" onmouseover=\"className='hilighton'; this.style.cursor='hand';\" onmouseout=\"className='hilightoff';\" onclick=\"window.location.href('./?id=" . $pages_2['id'] . "')\"";}
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD width=\"20\" style=\"font-size: 12px\"> </TD>\n<TD height=\"20\" align=\"left\" " . $menu_color . "><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($pages_2['descriptions']) . "\" href=\"./?id=" . $pages_2['id'] . "\">" . htmlspecialchars($pages_2['zagolovok_menu']) . "</a></CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
}}}}
// если совпало - надо строить подменю....
// достаём из таблицы разделов все страницы с разделом третьего уровня = разделу третьего уровня текущей страницы
// и при этом являющихся индексными для других разделов
$sql_3 = main_sql_query("SELECT * FROM `razdel_table` WHERE `rzd_3` = '" . $razdeli_indeksnoy_stranitsi['rzd_3'] . "' AND `rzd_5` = '0' AND `rzd_6` = '0'");
// пробегаемся по массиву и последовательно вытаскиваем пункты меню
while ($d_3 = mysql_fetch_assoc($sql_3)){
// запрос к БД самого сайта на построение меню - нужны заголовок и примечание
$sql_3_site = mysql_fetch_array(main_sql_query("SELECT `rzd`,`zagolovok_menu`, `descriptions`,`vizible` FROM `site_table` WHERE `id`='" . $d_3['id_index_pade_rzd'] . "' ORDER BY `id`"));
// если страница видимая (не нулю равен `визибле`)
if($sql_3_site['vizible'] == '1'){
// если это индексная страница этого уровня раздела - то её не выводим
// ломимся снова в таблицу разделов - смотрим индексная ли это страница раздела
$sql_3_site_indx_rzd = mysql_fetch_array(main_sql_query("SELECT `id_index_pade_rzd` FROM `razdel_table` WHERE `id_index_pade_rzd` = '" . $d_3['id_index_pade_rzd'] . "' AND `rzd_4` = '0' AND `rzd_5` = '0' AND `rzd_6` = '0'"));
if($d_3['id_index_pade_rzd'] == $sql_3_site_indx_rzd['id_index_pade_rzd']){
// ничё не делаем
}else{
// иначе - строим строку меню
// теперь надо посмотреть не для того ли раздела мы строили строку, в котором сейчас находимся, и если так оно и есть -
// надо строить выпадающее подменю...
if($razdeli_indeksnoy_stranitsi['rzd_4'] == $sql_3_site['rzd']){
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD width=\"20\" style=\"font-size: 12px\"> </TD>\n<TD height=\"20\" align=\"left\" class=\"current\" onmouseover=\"this.style.cursor='hand';\" onclick=\"window.location.href('./?id=" . $d_3['id_index_pade_rzd'] . "')\"><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($sql_3_site['descriptions']) . "\" href=\"./?id=" . $d_3['id_index_pade_rzd'] . "\">" . htmlspecialchars($sql_3_site['zagolovok_menu']) . "</a></CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
// меню построили, выпало :)
// если следующий уровень разделов = 0, то это конец меню, и надо вывести все страницы этого раздела
if($razdeli_indeksnoy_stranitsi['rzd_5'] == false){
$curr_razdel_pages_3 = main_sql_query("SELECT `id`, `zagolovok_menu`, `descriptions`, `vizible` FROM `site_table` WHERE `rzd` = '$razdeli_indeksnoy_stranitsi[rzd_4]' ORDER BY `id`");
while ($pages_3 = mysql_fetch_assoc($curr_razdel_pages_3)){
// если это таже страница, для которой строится подменю, то её не выводим
if($d_3['id_index_pade_rzd'] !== $pages_3['id']){
// если `visible` не равно нулю - выводим в меню
if($pages_3['vizible'] == '1'){
// раскрашиваем текущий пункт меню
if($pages_3['id'] == $id){$menu_color = "class=\"current\" onmouseover=\"this.style.cursor='hand';\" onclick=\"window.location.href('./?id=" . $pages_3['id'] . "')\"";}else{$menu_color = "class=\"hilightoff\" onmouseover=\"className='hilighton'; this.style.cursor='hand';\" onmouseout=\"className='hilightoff';\" onclick=\"window.location.href('./?id=" . $pages_3['id'] . "')\"";}
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD width=\"40\" style=\"font-size: 12px\"> </TD>\n<TD height=\"20\" align=\"left\" " . $menu_color . "><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($pages_3['descriptions']) . "\" href=\"./?id=" . $pages_3['id'] . "\">" . htmlspecialchars($pages_3['zagolovok_menu']) . "</a></CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
}}}}
// если совпало - надо строить подменю....
// достаём из таблицы разделов все страницы с разделом третьего уровня = разделу третьего уровня текущей страницы
// и при этом являющихся индексными для других разделов
$sql_4 = main_sql_query("SELECT * FROM `razdel_table` WHERE `rzd_4` = '" . $razdeli_indeksnoy_stranitsi['rzd_4'] . "' AND `rzd_6` = '0'");
// пробегаемся по массиву и последовательно вытаскиваем пункты меню
while ($d_4 = mysql_fetch_assoc($sql_4)){
// запрос к БД самого сайта на построение меню - нужны заголовок и примечание
$sql_4_site = mysql_fetch_array(main_sql_query("SELECT `rzd`,`zagolovok_menu`, `descriptions`,`vizible` FROM `site_table` WHERE `id`='" . $d_4['id_index_pade_rzd'] . "'"));
// если страница видимая (не нулю равен `визибле`)
if($sql_4_site['vizible'] == '1'){
// если это индексная страница этого уровня раздела - то её не выводим
// ломимся снова в таблицу разделов - смотрим индексная ли это страница раздела
$sql_4_site_indx_rzd = mysql_fetch_array(main_sql_query("SELECT `id_index_pade_rzd` FROM `razdel_table` WHERE `id_index_pade_rzd` = '" . $d_4['id_index_pade_rzd'] . "' AND `rzd_5` = '0' AND `rzd_6` = '0'"));
if($d_4['id_index_pade_rzd'] == $sql_4_site_indx_rzd['id_index_pade_rzd']){
// ничё не делаем
}else{
// иначе - строим строку меню
// теперь надо посмотреть не для того ли раздела мы строили строку, в котором сейчас находимся, и если так оно и есть -
// надо строить выпадающее подменю...
if($razdeli_indeksnoy_stranitsi['rzd_4'] == $sql_4_site['rzd']){
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD width=\"40\" style=\"font-size: 12px\"> </TD>\n<TD height=\"20\" align=\"left\" class=\"current\" onmouseover=\"this.style.cursor='hand';\" onclick=\"window.location.href('./?id=" . $d_4['id_index_pade_rzd'] . "')\"><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-current\" title=\"" . htmlspecialchars($sql_4_site['descriptions']) . "\" href=\"./?id=" . $d_4['id_index_pade_rzd'] . "\">" . htmlspecialchars($sql_4_site['zagolovok_menu']) . "</a></CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
/*
// меню построили, выпало :)
// если следующий уровень разделов = 0, то это конец меню, и надо вывести все страницы этого раздела
echo "6-й уровень = " . $razdeli_indeksnoy_stranitsi['rzd_6'];
if($razdeli_indeksnoy_stranitsi['rzd_6'] == false){
echo "совпало!"; }
*/
}else{
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n\t<TR>\n\t\t<TD width=\"40\" style=\"font-size: 12px\"> </TD>\n\t\t<TD height=\"20\" align=\"left\" class=\"hilightoff\" onmouseover=\"className='hilighton'; this.style.cursor='hand';\" onmouseout=\"className='hilightoff';\" onclick=\"window.location.href('./?id=" . $d_4['id_index_pade_rzd'] . "')\"><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($sql_4_site['descriptions']) . "\" href=\"./?id=" . $d_4['id_index_pade_rzd'] . "\">" . htmlspecialchars($sql_4_site['zagolovok_menu']) . "</a></CODE></TD>\n\t\t</TR>\n\t</TBODY>\n</TABLE>\n";
}}}}
}else{
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD width=\"20\" style=\"font-size: 12px\"> </TD>\n<TD height=\"20\" align=\"left\" class=\"hilightoff\" onmouseover=\"className='hilighton'; this.style.cursor='hand';\" onmouseout=\"className='hilightoff';\" onclick=\"window.location.href('./?id=" . $d_3['id_index_pade_rzd'] . "')\"><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($sql_3_site['descriptions']) . "\" href=\"./?id=" . $d_3['id_index_pade_rzd'] . "\">" . htmlspecialchars($sql_3_site['zagolovok_menu']) . "</a></CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
}}}}
}else{
$left_menu = $left_menu . "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"0\" width=\"100%\" id=\"left_menu\">\n<TBODY>\n<TR>\n<TD height=\"20\" align=\"left\" class=\"hilightoff\" onmouseover=\"className='hilighton'; this.style.cursor='hand';\" onmouseout=\"className='hilightoff';\" onclick=\"window.location.href('./?id=" . $d_2['id_index_pade_rzd'] . "')\"><CODE style=\"font-size: 9pt;\"><A class=\"left-menu-link\" title=\"" . htmlspecialchars($sql_2_site['descriptions']) . "\" href=\"./?id=" . $d_2['id_index_pade_rzd'] . "\">" . htmlspecialchars($sql_2_site['zagolovok_menu']) . "</a></CODE></TD>\n</TR>\n</TBODY>\n</TABLE>\n";
}}}}
// удаляем все переменные, кроме $left_menu (в ней собственно результат - меню :))
unset ($i);
unset ($sql_query);
unset ($massiv_rzd_i);
unset ($key);
//unset ($rzd_uroven); закомментировано т.к. нужно для постороения навигационной полосы
unset ($massiv_rzd);
unset ($indx_page_curr_rzd);
unset ($index_top_rzd);
unset ($part1_sql_query);
unset ($part2_sql_query);
unset ($razdeli_indeksnoy_stranitsi);
unset ($sql_2);
unset ($d_2);
unset ($sql_2_site);
unset ($sql_2_site_indx_rzd);
unset ($curr_razdel_pages_2);
unset ($pages_2);
unset ($sql_3);
unset ($d_3);
unset ($sql_3_site);
unset ($sql_3_site_indx_rzd);
unset ($curr_razdel_pages_3);
unset ($pages_3);
unset ($sql_4);
unset ($d_4);
unset ($sql_4_site);
unset ($sql_4_site_indx_rzd);
unset ($curr_razdel_pages_4);
unset ($pages_4);
Код: Выделить всё
--
-- Структура таблицы `razdel_table`
--
CREATE TABLE `razdel_table` (
`rzd_1` int(3) NOT NULL default '0',
`rzd_2` int(3) NOT NULL default '0',
`rzd_3` int(3) NOT NULL default '0',
`rzd_4` int(3) NOT NULL default '0',
`rzd_5` int(3) NOT NULL default '0',
`rzd_6` int(3) NOT NULL default '0',
`id_index_pade_rzd` int(10) NOT NULL default '0',
`vizible_name_rzd` varchar(128) collate cp1251_bin NOT NULL default '',
PRIMARY KEY (`id_index_pade_rzd`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin COMMENT='таблица разделов сайта';
--
-- Дамп данных таблицы `razdel_table`
--
INSERT INTO `razdel_table` (`rzd_1`, `rzd_2`, `rzd_3`, `rzd_4`, `rzd_5`, `rzd_6`, `id_index_pade_rzd`, `vizible_name_rzd`) VALUES
(1, 0, 0, 0, 0, 0, 1000, 'www.lissyara.su'),
(1, 2, 0, 0, 0, 0, 1001, 'главная'),
(1, 3, 0, 0, 0, 0, 1002, 'форум'),
(1, 4, 0, 0, 0, 0, 1003, 'статьи'),
(1, 5, 0, 0, 0, 0, 1004, 'документация'),
(1, 6, 0, 0, 0, 0, 1005, 'опросы'),
(1, 7, 0, 0, 0, 0, 1006, 'поиск по сайту'),
(1, 4, 8, 0, 0, 0, 1007, 'FreeBSD'),
(1, 4, 8, 9, 0, 0, 1008, 'настройка'),
(1, 4, 8, 10, 0, 0, 1009, 'подсчёт траффика'),
(1, 4, 8, 11, 0, 0, 1011, 'Программы для FreeBSD'),
(1, 4, 12, 0, 0, 0, 1014, 'Очумелые ручки'),
(1, 4, 8, 13, 0, 0, 1015, 'почтовые системы'),
(1, 14, 0, 0, 0, 0, 1020, 'Downloads'),
(1, 14, 15, 0, 0, 0, 1021, 'boot disks'),
(1, 14, 15, 16, 0, 0, 1022, 'WinNT'),
(1, 14, 15, 17, 0, 0, 1023, 'DOS & Win9x'),
(1, 2, 18, 0, 0, 0, 1025, 'Страница авторов сайта'),
(1, 4, 12, 19, 0, 0, 1032, 'Компы'),
(1, 4, 12, 20, 0, 0, 1033, 'не тока компы - прочее'),
(1, 14, 21, 0, 0, 0, 1036, 'downloads -> Программы для форточек'),
(1, 2, 22, 0, 0, 0, 1038, 'главная -> история'),
(1, 4, 12, 23, 0, 0, 1047, 'очумелые ручки -> околокомпы'),
(1, 5, 24, 0, 0, 0, 1052, 'RFC'),
(1, 5, 25, 0, 0, 0, 1067, 'программирование'),
(1, 14, 15, 26, 0, 0, 1074, 'Прочие DOS`ы'),
(1, 4, 8, 27, 0, 0, 1078, 'Железки под фрёй'),
(1, 4, 8, 28, 0, 0, 1080, 'Мелочёвка'),
(1, 4, 8, 29, 0, 0, 1086, 'Программы для работы с FS'),
(1, 4, 8, 30, 0, 0, 1130, 'WWW'),
(1, 2, 31, 0, 0, 0, 1142, 'статистика поссещений.'),
(1, 4, 8, 32, 0, 0, 1146, 'Security'),
(1, 2, 33, 0, 0, 0, 1174, 'Архив статей'),
(1, 5, 34, 0, 0, 0, 1200, 'Specification of the Exim Mail Transfer Agent'),
(1, 14, 15, 35, 0, 0, 1065, 'прочие загрузочные диски'),
(1, 4, 8, 36, 0, 0, 1170, 'system'),
(1, 5, 37, 0, 0, 0, 1357, 'Документация поFreeBSD'),
(1, 5, 38, 0, 0, 0, 1400, 'LDAP'),
(1, 4, 8, 39, 0, 0, 1352, 'freebsd->games'),
(1, 4, 8, 40, 0, 0, 1353, 'Иксы'),
(1, 4, 8, 41, 0, 0, 1354, 'программирование (FreeBSD)'),
(1, 5, 37, 42, 0, 0, 1340, 'mpd'),
(1, 5, 43, 0, 0, 0, 1358, 'doc -> man');
Код: Выделить всё
#
# Table structure for table 'section'
#
CREATE TABLE section (
sectionID int(3) NOT NULL auto_increment,
parentID int(3) NOT NULL DEFAULT '0' ,
title varchar(255) NOT NULL DEFAULT '' ,
content text ,
PRIMARY KEY (sectionID),
INDEX title (title)
);
#
# Dumping data for table 'section'
#
INSERT INTO section VALUES("1","0","About Site","This is a simple but useful tool and can either be used as a site menu system.");
INSERT INTO section VALUES("2","0","Other category","texttexttexttexttexttexttext");
INSERT INTO section VALUES("3","2","Second level category","texttexttexttexttexttexttext");
INSERT INTO section VALUES("4","3","Third level","texttexttexttexttexttexttext");
INSERT INTO section VALUES("5","0","Installation instruction","unpack the downloaded file!");
INSERT INTO section VALUES("6","0","Requirements","MySQL<br>PHP4+<br>Webserver (anything that can run PHP)");
INSERT INTO section VALUES("7","5","another level","texttexttexttexttexttexttext");
INSERT INTO section VALUES("8","5","umm now another one","texttexttexttexttexttexttext");
INSERT INTO section VALUES("9","7","you must be joking","texttexttexttexttexttexttext");
INSERT INTO section VALUES("10","4","bobo","texttexttexttexttexttexttext");
INSERT INTO section VALUES("11","4","oh boy","texttexttexttexttexttexttext");
Код: Выделить всё
<?
#database settings
function dbconnect (){
$mysql=mysql_connect("localhost", "SiteUser", "UserPassword");
mysql_select_db("urgor");
return $mysql;
}
function mytree($parentid, $subid, $menu, $level) {
$dots = "<==$level==>";
$sql = "select sectionID, parentID, title from section where parentID = '$parentid' order by title asc";
$result=mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$output = $output . "<a href=\"$php_self?id=$row[parentID]\">$dots</a> <a href=\"$php_self?id=$row[sectionID]\">".stripslashes($row[title])."</a> (myid:$row[sectionID])(myparentid:$row[parentID])(mytreelevel:$level)<br>";
if ($subid == $row[sectionID]) $output = $output . $menu;
}
if ($parentid > 0) {
$sql = "select sectionID, parentID from section where sectionID = '$parentid'";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
$output = mytree($row[parentID], $parentid, $output, ++$level);
}
$dots = '';
for ($i = $level; $i > 0; $i--) {
$output = str_replace("<==$i==>", $dots, $output);
$dots .= '<img border="0" src="images/bul-path.gif" width="17" height="11">';
}
return $output;
}
$id = $_GET['id'];
if ($id == '') $id = 0;
#----------------------------------------------------------------------
dbconnect();
$menu = mytree($id,0,'',1);
echo $menu;
mysql_close();
?>