PHP уроки
ПРОСТО самая лучшая обучалка PHP!
  • Студия LPHPRU
  • Уроки PHP
  • Контакты
  • Помощь
Меню
  • PHP - с чего начать?
  • Уроки PHP
  • Функции PHP
  • Массивы
  • Denwer
  • MySQL
  • Информация
  • Dreamweaver уроки
  • JQuery уроки
  • Галерея
  • OpenCart
Календарь
Февраль (2023)
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728     
В продаже

  • Что нового?

    • Тест №2
    • Тест №1 для разработчиков
    • PHP 5.6 RC1
    • SQL. Как cкопировать данные одной колонки в другую, в той же таблице
    • GRUB изменить порядок загрузки OS в Linux
    • SSH - вход на сервер без ввода пароля
    • PhpMyAdmin - проблема с загрузкой большого файла на сервер
  • Комментарии

    • Hello
    • тут нечего не понятно
    • Может уже пора на WebStorm переходит...
    • Здравствуйте. 10 лет пользуюсь др...
    • Была такая проблема, решалась пе...
  • TOP-5

    • Метод POST (2945468 )
    • Привет, МИР! (910791 )
    • Метод GET (667156 )
    • Операторы (605670 )
    • Firefox уже запущен, но не отвечает... (352940 )

Меню для сайта

Главная» Array » Меню для сайта
PHP урок № 378
Меню на PHP
Смысл урока в демонстрации принципа вывода данных, для меню из БД и формирование вертикального меню динамически. Здесь не будет слишком изящных форм и красот CSS, но за то будет развёрнут смысл построения архитектуры вложенного меню. К слову сказать решение не универсальное, но заслуживает внимания и изучения.
Для начала сделаем таблицу, это реальная таблица категорий одного сайта. Дамп таблицы ниже, можно установить в любую бд.
CREATE TABLE IF NOT EXISTS `categories` ( `category_id` int(11) NOT NULL AUTO_INCREMENT, `category_title` varchar(255) NOT NULL DEFAULT '0', `parent` int(10) NOT NULL, `pos` int(10) NOT NULL, `pageurl` varchar(120) NOT NULL, PRIMARY KEY (`category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ; -- -- Дамп данных таблицы `categories` -- INSERT INTO `categories` (`category_id`, `category_title`, `parent`, `pos`, `pageurl`) VALUES (1, 'Свадебные торты', 0, 0, 'свадебные-торты'), (2, 'Детский праздник', 0, 0, 'детские-торты'), (3, 'Корпоративы', 0, 0, 'корпоративные-торты'), (4, 'Праздники', 0, 0, 'праздничные-торты'), (5, 'Серийные торты', 0, 0, 'серийные-торты'), (6, 'Пирожные', 0, 0, 'пирожные'), (15, 'Детские торты на день рождения', 2, 0, 'детские-торты-на-день-рождения'), (14, 'Детские торты на год', 2, 0, 'детские-торты'), (16, 'Торты детские для девочек ', 2, 0, ''), (17, 'Торты детские для мальчиков', 2, 0, ''), (18, 'Свадебные торты из мастики', 1, 0, 'свадебные-торты-из-мастики'), (19, 'Эксклюзивные свадебные торты', 1, -1, 'эксклюзивные-свадебные-торты'), (20, 'Свадебный каравай', 1, 0, 'свадебный-каравай');
Меню здесь требуется двухуровневое, хотя можно, следуя принципу построения добавить и ещё уровень. Ну а для тех кто в теме, вообще не составит труда автоматизировать создание вложенных уровней меню.
Листинг № Array - Меню на php для сайта.
<?php

include 'config.php';
        
    
$query = mysql_query("
            SELECT * FROM categories WHERE parent='0'
    "
);
    
    
$menu .= '<ul>';
    while (
$c = mysql_fetch_array($query)){
        
        
$menu .= '<li><h3>'. $c['category_title'].'</h3>';
        
        
$q = mysql_query("SELECT category_title FROM categories WHERE parent = '".$c['category_id']."'");
        
        
$menu .= '<ul>';
        while (
$c2 = mysql_fetch_array($q)){
            
$menu .=  '<li>'. $c2['category_title'].'</li>';
        }
        
$menu .= '</ul>';
        
        
$menu .= '</li>';
    }
    
$menu .= '</ul>';

echo 
$menu;

?>
Результат работы скрипта меню:
  • Свадебные торты
    • Свадебные торты из мастики
    • Эксклюзивные свадебные торты
    • Свадебный каравай
  • Детский праздник
    • Детские торты на день рождения
    • Детские торты на год
    • Торты детские для девочек
    • Торты детские для мальчиков
  • Корпоративы
    • Праздники
      • Серийные торты
        • Пирожные
          Задача на php и mysql, по созданию меню закончена. Далее следует динамика на стороне клиента, т.е. JQuery
          Mеню JQuery
          Листинг № Array - Код на jquery, для сокрытия подменю
          <script src="js/jquery-1.6.4.js"></script> <script language="javascript" type="text/javascript"> $(function(){ var one = $('ul>li').css({"color":"green"}); var two = $('li>ul>li').css({"color":"red"}); $('li>ul').hide(); $('h3').click( function(){ $(this).next('ul').toggle(600); }); }); </script>
          Меню на jquery, результат работы.
          Листинг № Array - Файл config.php
          <?php 
          $HOST 
          = "localhost";
          $USER = "root";
          $PASS = "";
          $DB = "ВАША БД";



              if(!
          mysql_connect("$HOST", "$USER", "$PASS")) exit(mysql_error());
              else {echo 
          "";}
              
              if (!
          mysql_select_db($DB)) exit(mysql_error());
              else{echo 
          "";}
              
              
          mysql_query('SET NAMES utf8;');

          ?>
          Урок закончен.
          SETTER © LPHP.RU
          Администрация сайта
          Array
          Скачать меню на php
          • lphp.ru © 2009-2023