Создать форум бесплатно: ixbb.ru :: Календарь на Май 2024 года: calendar2008.ru/2024/may/

  Reply to this topicStart new topicStart Poll

Меню в админке

, Подпункты меню разворачиваются не там
yatop
Отправлено: Feb 27 2011, 11:20 PM
Quote Post


  Солдат
*

Группа: Members
Сообщений: 9
Пользователь №: 3588
Регистрация:
2-November 10



Доброго времени суток всем!

Помогите, пожалуйста. Сразу скажу, что в php разбираюсь достаточно плохо, но написала вот такой вот код:

CODE
$general = _FFile($mainmenu_dat);
    if (strlen(trim($general[0])) > 1 ) {
    $lines = count($general);
    for ($i = 0; $i < $lines; $i++) {
       list($menu_link,$menu_name,$menu_title,$menu_description,$menu_keywords,$anons)=explode("::", $general[$i]);
       if(!ereg ("_", $menu_link)){
 ++$x; print _Charset ("\n<b class='verx'><a href='".$_Url."?act=pages_menu&rubrika=".$x.$session_link."'>Рубрика \"".$menu_name."\"</a></b>".$pervoe_mesto."<br> ");
 }
    elseif($rubrika==$x){
 list($m,$mr)=explode("_", $menu_link);
 if(ereg ("^([A-Za-z0-9-]+_[A-Za-z0-9-]+)\$", $menu_link)){
       print _Charset ("\n&nbsp;&nbsp;&nbsp;<a href='".$_Url."?act=pages_menu&rubrika=".$rubrika."&rasdel=".$mr.$session_link."'>Раздел\"".$menu_name."\"</a>".$pervoe_mesto_ras."<br> ");
 }
 elseif ($rasdel==$mr){
 list($m,$mr,$mp)=explode("_", $menu_link);
 if (ereg ("^([A-Za-z0-9-]+_[A-Za-z0-9-]+_[A-Za-z0-9-]+)\$", $menu_link)){
 print _Charset ("\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='".$_Url."?act=pages_menu&rubrika=".$rubrika."&rasdel=".$rasdel."&podrasdel=".$mp.$session_link."'>Подраздел\"".$menu_name."\"</a>".$pervoe_mesto_podras."<br> ");
 }
   }
     }
    }


Все клево и работает, кроме одного:
Подпункты меню разворачиваются не под родительским элементом, а в конце.
Т.е.
Рубрика1
-раздел1
-раздел2
---подпункт раздела1
---подпункт раздела1
Рубрика2


Что нужно сделать, чтобы они разворачивались под родительским элементом?

И еще вопрос возник. У меня база данных на текстовых файлах. Лучше сделать один файл со всеми данными или лучше разбить на отдельные файлы, т.е. Разделы в одном файле, рубрики в своих, подрубрики в своих и не заморачиваться с ereg? Как быстрее и лучше?

Спасибо за помощь!
PMEmail Poster
Top
Ilidan
Отправлено: Feb 28 2011, 06:49 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 940
Пользователь №: 508
Регистрация:
30-March 07



По первому вопросу: Найди готовые ява-скрипт код и не парься =)
По второму вопорос: Быстрее и лучше: База данных. Не на файлах. А SQL или подобное.


--------------------
;-)
PMEmail PosterICQAOL
Top
yatop
Отправлено: Feb 28 2011, 07:12 PM
Quote Post


  Солдат
*

Группа: Members
Сообщений: 9
Пользователь №: 3588
Регистрация:
2-November 10



1. Спасибо, но на яве не хочу smile.gif
2. С базами данных работать не умею и учиться сил нет, ибо это не является моей специальностью smile.gif, делаю сайт для себя. А с базами на текстовых файлах уже разобралась.
PMEmail Poster
Top
Asid Storm
Отправлено: Feb 28 2011, 08:41 PM
Quote Post


  Команда ЭйсВэб
*

Группа: Super moderator
Сообщений: 895
Пользователь №: 39
Регистрация:
27-August 06



Если уж извращаться с файлами, то давайте будем извращаться с нуля - ИМХО легче переписать заного, чем пытаться исправить то, что было написано, да ещё и не самим собой )

Давайте, для начала, разберём всё по полочкам, т.е. не будем рассматривать конкретно ваш код, а рассмотрим некий пример:

Дано:
Файл с данными о меню в формате:
CODE
{menuId}:{menuLink}_{podMenuLinks},
 где {menuLink} - действие на открытие нужного нам раздела,
  {menuId} - ID основного раздела
  {podMenuLinks} - строка такого вида:
    {link1}|{podLink2}|{podLink3};{link4}|{podLink5};
    где {link[1-n]} - строка такого вида {link},{lId},
     {lId} - ID подменю, {link} - действие в подменю
     {podLink[1-m]} - действие, находящиеся в подразделе подраздела

Задача:
Вывести на страницу меню, с пунктами, которые будут открываться при нажатии на родительский пункт в меню.
Решение:
Исходный файл [file.dat]
CODE
1:index_guest,3|add|edit;forum,4|login|exit
2:admin_edit,5|delete,6;

Контрольный пример, перед написанием кода:
CODE
index
- guest
-- add
-- adm
- forum
-- login
-- exit
admin
- edit
-- delete

// Открыты все элементы, в конечном итоге открыты будут элементы раздела и подраздела.
Код программы на языке PHP:
CODE
<?
$file = file('file.dat');
$c = count($file);
for($i=0;$i<=($c-1);$i++){ // Сделаем пробег по категориям
$expl = explode(':',$file[$i]); // Выведем основную категорию
$e     = explode('_',$expl[1]);
print '<a href="?menu=' . $expl[0] . '&act=' . $e[0] . '">' . $e[0] . '</a><br>';
// А теперь рассмотрим все подменю
if($_GET['menu'] == $expl[0]){
 $r = explode(';',$e[1]);
 for($j=0;$j<=(count($r)-1);$j++){
  $q = explode('|',$r[$j]);
  $p = explode(',',$q[0]);
  print '- <a href="?menu=' . $expl[0] . '&podMenu=' . $p[1] . '&act=' . $p[0] . '">' . $p[0] . '</a><br>';
  if($_GET['podMenu'] == $p[1]){
   for($n=1;$n<=(count($q)-1);$n++){
    print '-- <a href="?menu=' . $expl[0] . '&podMenu=' . $p[1] . '&act=' . $q[$n] . '">' . $q[$n] . '</a><br>';
   }
  }
 }
}
}
?>

Комментарии:
Немного изменив код, и добавив несколько дополнительных элементов в file.dat мы можем как добавить всем ссылкам заголовки на русском языке, так и картинки вместо обычных ссылок и пр.

// Код писался прямо на форуме, так что могут быть ошибки типа не хватает } или ;
PMEmail PosterUsers WebsiteICQ
Top
yatop
Отправлено: Mar 1 2011, 01:18 PM
Quote Post


  Солдат
*

Группа: Members
Сообщений: 9
Пользователь №: 3588
Регистрация:
2-November 10



Спасибо!
PMEmail Poster
Top

Topic Options Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0282 ]   [ 10 queries used ]   [ GZIP выключен ]