ФорумПрограммированиеPHP для идиотов → JavaScript (menu) From MySQL

JavaScript (menu) From MySQL

  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 26 июля 2010 г. 23:30

    Всем Пыхам по Пахам !!! :)

    Нашел в инете очень хорошую JS менюшку… и
    Очень сильно хочется сделать выборку меню из БД… даже может быть с возможностью добавления/удаления новых катигорий из админки или БД. Только Вот как грамотко создать таблицу в БД незнаю, все выходные уже
    пыхчу-чу-чу.

    Скрипт собственной персоной.

    <script type="text/javascript"> 
    // ******************
    // Объект-массив c информацией о меню
    // ******************
    var menuArray = {
    '1.html' : ["Мониторы", {
    '5.html' : ["15 дюймов"],
    '6.html' : ["17 дюймов"],
    '7.html' : ["19 дюймов"],
    '8.html' : ["21 и более дюймов"]
    }],
    '2.html' : ["Жесткие диски", {
    '9.html' : ["40-80 Гб"],
    '10.html' : ["120-160 Гб"],
    '11.html' : ["180-250 Гб"],
    '12.html' : ["300-500 Гб"],
    '13.html' : ["более 500 Гб"]
    }],
    '3.html' : ["Процессоры", {
    'proc=amd' : ["AMD", {
    '14.html' : ["Athlon"],
    '15.html' : ["Barton"],
    '16.html' : ["Sempron"]
    }],
    'proc=intel' : ["Intel", {
    '17.html' : ["Pentium"],
    '18.html' : ["Celeron"]
    }]
    }],
    '4.html' : ["Бонус-карта"]
    }

    // ******************
    // Глобальные переменные для работы функций
    // ******************
    var menuWaitTimer = {};
    var menuOpenedCount = 0;

    // ******************
    // Функция формирования HTML-кода меню и вывода на страницу
    // ******************
    function drawJSMenu(containerId, hash, path) {
    // ———– Константы ————
    var commonClassName = "common";
    var parentClassName = "parent";
    var levelClassPrefix = "level_";
    var menuWaitInterval = 500; // ms
    // ———– Переменные ————
    var container = document.getElementById(containerId);
    var html = _class = mouseOverOut = id = "";
    var i;
    var idArray = []
    // ———– Функции ————
    // Рекурсивная функция для прохождения по многоуровневому
    // хэшу и формированию HTML-кода меню
    var cicleFunc = function(code, hash, level, parentId) {
    if (typeof level != "undefined" && level != 1) code += "<span id='b" + parentId + "' style='display:none;'>\n";
    for (i in hash) {
    var randId = parseInt(Math.random() * 1e10).toString() + parseInt(Math.random() * 1e10);
    _class =
    ((typeof hash[1] != "undefined") ? parentClassName : commonClassName) +
    " " + levelClassPrefix + level;
    if (typeof hash[1] != "undefined") {
    id = " id='a" + randId + "'";
    idArray.push(randId);
    } else id = 0;
    code += "<a" + (id ? id : "") + " class='" + _class + "' href='" + path + i + "'>" + hash[0] + "</a>\n";
    if (typeof hash[1] != "undefined") code += cicleFunc(html, hash[1], level+1, randId);
    }
    if (typeof level != "undefined" && level != 1) code += "</span>\n";
    return code;
    }
    // ———– Добавление HTML-кода меню на страницу ————
    html = cicleFunc(html, hash, 1);
    container.innerHTML = html;
    // ———– Добавление обработчиков событий ————
    for (i = 0; i < idArray.length; i++) {
    document.getElementById("a" + idArray).onmouseover = function() {
    menuOpenedCount++;
    var absId = this.id.substring(1, this.id.length);
    document.getElementById("b" + absId).style.display = "";
    }
    document.getElementById("a" + idArray).onmouseout = function() {
    menuOpenedCount–;
    var absId = this.id.substring(1, this.id.length);
    if (typeof menuWaitTimer[absId] == "undefined" || menuWaitTimer[absId] == null) {
    menuWaitTimer[absId] = setInterval("hideJSMenu('" + absId + "')", menuWaitInterval);
    }
    }
    document.getElementById("b" + idArray).onmouseover = function() {
    menuOpenedCount++;
    var absId = this.id.substring(1, this.id.length);
    if (typeof menuWaitTimer[absId] != "undefined") {
    clearInterval(menuWaitTimer[absId]);
    menuWaitTimer[absId] = null;
    }
    }
    document.getElementById("b" + idArray).onmouseout = function() {
    menuOpenedCount–;
    var absId = this.id.substring(1, this.id.length);
    if (typeof menuWaitTimer[absId] == "undefined" || menuWaitTimer[absId] == null) {
    menuWaitTimer[absId] = setInterval("hideJSMenu('" + absId + "')", menuWaitInterval);
    }
    }
    }
    }

    // ******************
    // Функция для убирания выпадушек, запускается по таймауту
    // ******************
    function hideJSMenu(id) {
    if (menuOpenedCount <= 0) {
    menuOpenedCount = 0;
    if (typeof menuWaitTimer[id] != "undefined") {
    clearInterval(menuWaitTimer[id]);
    menuWaitTimer[id] = null;
    }
    if (document.getElementById("b" + id)) {
    document.getElementById("b" + id).style.display = "none";
    }
    }
    }
    </script>
    <style type="text/css">
    /* Стили для ссылок в выпадающем меню */
    .common {
    display:block;
    float:left; clear:left;
    color:#666; font:12px arial;
    }
    .parent {
    display:block;
    float:left; clear:both;
    color:#66AA66; font:12px arial;
    }
    .level_1 {padding-left:0;}
    .level_2 {padding-left:30px;}
    .level_3 {padding-left:60px;}
    </style>
    <script type="text/javascript">
    document.write (
    "<table width='100%'><tr><td style='border:1px solid #FFF;' id='containerId'></td></tr></table>"
    );
    drawJSMenu("containerId", menuArray, "/");
    </script>
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 26 июля 2010 г. 23:54, спустя 24 минуты 50 секунд



    // ******************
    // Глобальные переменные для работы функций
    // ******************


    обожаю такие камменты )
    Спустя 133 сек.
    Только Вот как грамотко создать таблицу в БД незнаю, все выходные уже
    а какая она у вас сейчас? Либо как вы предпологаете, покажите свою структуру
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 июля 2010 г. 7:32, спустя 7 часов 37 минут 10 секунд

    гавенная менюшка, по крайней мере по коду :D
    Сапожник без сапог
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 27 июля 2010 г. 9:47, спустя 2 часа 15 минут 4 секунды

    простая таблица: айдишник, родитель, название, ссылка(или условие ссылки)
    С возвращением, Пiха! hyperoff.ru - качественный хостинг php
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 27 июля 2010 г. 13:52, спустя 4 часа 5 минут 25 секунд

    простая таблица: айдишник, родитель, название, ссылка(или условие ссылки)

    я тоже о такой фигне подумал..
    только зачем такая космическая жска?) наверно лучше в пхп обработку делать))
    Высокоуровневое абстрактное говно
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 28 июля 2010 г. 21:32, спустя 1 день 7 часов 40 минут

    Дело в том, что как я думаю вы поняли…

    var menuArray = {
    '1.html' : ["Мониторы", {
    '5.html' : ["15 дюймов"],
    '6.html' : ["17 дюймов"],
    '7.html' : ["19 дюймов"],
    '8.html' : ["21 и более дюймов"]
    }],
    '2.html' : ["Жесткие диски", {
    '9.html' : ["40-80 Гб"],
    '10.html' : ["120-160 Гб"],
    '11.html' : ["180-250 Гб"],
    '12.html' : ["300-500 Гб"],
    '13.html' : ["более 500 Гб"]
    }],
    '3.html' : ["Процессоры", {
    'proc=amd' : ["AMD", {
    '14.html' : ["Athlon"],
    '15.html' : ["Barton"],
    '16.html' : ["Sempron"]
    }],
    'proc=intel' : ["Intel", {
    '17.html' : ["Pentium"],
    '18.html' : ["Celeron"]
    }]
    }],
    '4.html' : ["Бонус-карта"]
    }


    Это и есть само меню которое можно простым добавлением скажем в такой форме.
    '2.html' : ["Жесткие диски", {
    '9.html' : ["40-80 Гб"],
    '10.html' : ["120-160 Гб"],
    '11.html' : ["180-250 Гб"],
    '12.html' : ["300-500 Гб"],
    '13.html' : ["более 500 Гб"]
    '?cat=1' : [
    }],


  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 28 июля 2010 г. 21:51, спустя 18 минут 52 секунды

    _____Блин все не могу понять как свои сообщения редактировать…… или удалять…


    Дело в том, что как я думаю вы поняли…
    Это и есть само меню. Которое добавляется и удаляется простой строчкой, НО !!!!!!

    var menuArray = {
    '1.html' : ["Мониторы", {
    '5.html' : ["15 дюймов"],
    '6.html' : ["17 дюймов"],
    '7.html' : ["19 дюймов"],
    '8.html' : ["21 и более дюймов"]
    }],
    '2.html' : ["Жесткие диски", {
    '9.html' : ["40-80 Гб"],
    '10.html' : ["120-160 Гб"],
    '11.html' : ["180-250 Гб"],
    '12.html' : ["300-500 Гб"],
    '13.html' : ["более 500 Гб"]
    }],
    '3.html' : ["Процессоры", {
    'proc=amd' : ["AMD", {
    '14.html' : ["Athlon"],
    '15.html' : ["Barton"],
    '16.html' : ["Sempron"]
    }],
    'proc=intel' : ["Intel", {
    '17.html' : ["Pentium"],
    '18.html' : ["Celeron"]
    }]
    }],
    '4.html' : ["Бонус-карта"]
    }



    Поэкспериментировав я создал БД в такой форме …

     	

    id cat script
    1 1 '1.php' : ["Мониторы", { '5.html' : ["15 дюй…
    [/sql]
    И так далее…
    А вот пхп код также эксперементальный но Истевтвенно ничего не работает….

    [php]
    var menuArray = {
    <?php
    $sql_result_cat_fin = mysql_query("SELECT * FROM fin_cat",$sql);
    $sql_myrow_cat_fin = mysql_fetch_array($sql_result_cat_fin);
    do{
    printf("%s",$sql_myrow_cat_fin["id"]);
    }
    while ($sql_result_cat_fin = mysql_fetch_array($sql_result_cat_fin))
    ?>[/php]

    PHP код вместо JS менюшки……

    Так вот вопрос как эту менюшку раскидать по базе так что бы дапустим в любою катигорию можно было дабовлить


    _____
    думаю что объяснил понятно…
    жуду каментов "дурак иди читай книги по SQL и javascript"……%)
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 28 июля 2010 г. 22:05, спустя 13 минут 24 секунды

    hilton_413, храни в БД только данные - раздел, ссылку на него, id родительского раздела, а не куски JS кода.
    А весь JS надо формировать PHP скриптом.

    И опять, блин, do … while. Откуда они его все берут?
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 28 июля 2010 г. 21:59, спустя 23 часа 54 минуты 39 секунд

    а весь жс надо брать из дом дерева размеченного через ul => li => ul => li …
  • и индексироваться будет хорошо и выглядеть прекрасно, вместо выглядеть как гавно и не индексироваться
    Спустя 52 сек.
    И опять, блин, do … while. Откуда они его все берут?

    phpmysqlvideo.ru ебаный попов своим говнокодом заразил всю школоту
Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 28 июля 2010 г. 22:13, спустя 14 минут 11 секунд


    _____Блин все не могу понять как свои сообщения редактировать…… или удалять…

    никак, это специально запрещено
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 28 июля 2010 г. 22:17, спустя 4 минуты 2 секунды

    _____Блин все не могу понять как свои сообщения редактировать…… или удалять…

    попался!! удаленец!
    Сапожник без сапог
  • hilton_413

    Сообщения: 38 Репутация: N Группа: Кто попало

    Spritz 28 июля 2010 г. 22:36, спустя 18 минут 41 секунду

    "Я Учился Создавать Профессиональные PHP Сайты 5 Долгих Лет, А Вы Можете Познать Эту Науку Всего За 22 Часа И 33 Минуты…"
    http://php-mysql-video.ru/


    И опять, блин, do … while. Откуда они его все берут?

    Ели есть лучшая альтернатива…. жду подсказки….

    Формирование JS php кодом, это пока для меня очень дремучий лес…. Даже не знаю с чего начать….
    _____
    Пошел читать умные книги….


  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 28 июля 2010 г. 22:49, спустя 13 минут 7 секунд

    Современные поповы - все ебанутые и в тоже время умные, всех наебали
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 28 июля 2010 г. 23:02, спустя 12 минут 29 секунд

    как говорил мой напарник:
    "ха-ха-ха! Да ты просто жалкий неудачник!"
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 28 июля 2010 г. 23:20, спустя 18 минут 17 секунд

    "Я Учился Создавать Профессиональные PHP Сайты 5 Долгих Лет, А Вы Можете Познать Эту Науку Всего За 22 Часа И 33 Минуты…"
    http://php-mysql-video.ru/



    я один такой дурак, который учился всему на форумах и чужих исходниках?))
    интересно, сколько стоит это уг?)
    Высокоуровневое абстрактное говно
  • Пожалуйста, авторизуйтесь, чтобы написать комментарий!