Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.01.2016, 12:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Какая разница кто эти списки будет готовить?
Вот как понять "опции уже в базе"? Если код списков готовятся, значит нет никаких опций в базе, есть данные для них, и вам не опции запрещать надо, а описать группу в списке, а делается это тем, на что я давал ссылку - ознакомились?
А для того чтобы это сделать, нужно соответствующие этому данные получить, структуру их, а дальше уже копейки.
Ответить с цитированием
  #12 (permalink)  
Старый 07.01.2016, 03:55
Интересующийся
Отправить личное сообщение для Alex921 Посмотреть профиль Найти все сообщения от Alex921
 
Регистрация: 04.01.2016
Сообщений: 11

laimas, Это для вас копейки, так как вы знаете что и как, а для меня ж*па...
Ответить с цитированием
  #13 (permalink)  
Старый 07.01.2016, 04:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990



Копейки, уверяю. Я не знаю как делается запрос на сервере и что возвращает, но принцип должен быть следующим - запрос должен возвращать записи, которые отсортированы по родителю. Вот пример, где объект, это возвращенный сервером запрос в базу. name_group - это имя группы (в ответе может быть и id группы, если нужен, в дальнейшем можно и по нему расклад делать, но это не столь важно), два остальных параметра, это параметры опций.

Ну и собственно само построение списка:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
var s = [
    {
        name_group : 'name 1',
        id_option : 2,
        name_option : 'option 1'
    },
    {
        name_group : 'name 1',
        id_option : 3,
        name_option : 'option 2'
    },
    {
        name_group : 'name 1',
        id_option : 4,
        name_option : 'option 3'
    },
    {
        name_group : 'name 2',
        id_option : 5,
        name_option : 'option 4'
    },
    {
        name_group : 'name 2',
        id_option : 6,
        name_option : 'option 5'
    },
    {
        name_group : 'name 2',
        id_option : 7,
        name_option : 'option 6'
    }
], sel, grp, name; 
$(function() {
    sel = $('<select/>').appendTo('body');
    $.each(s, function() {
        if(this.name_group != name) {
            name = this.name_group;
            grp = $('<optgroup label="'+name+'"/>').appendTo(sel);
        }
        grp.append('<option value="'+this.id_option+'">'+this.name_option+'</option>')
        
    });
});
</script>     
</head> 
<body>
</body> 
</html>


Здесь работа с DOM, правда в среде jQuery, собственно и просто на JS будет тоже самое, суть, ну чуть больше строк кода будет.

Ваш же код подготавливает строку описывающую html-код списка, и так же нужно было бы поступать и на сервере. И если поступать так, то чуть изменится суть, но принцип будет тот же. Сперва в строку открывающие теги списка и группы, а далее сравнение переменной с текущей группой, и если не равно, то присвоить ей текущую группы, и добавить в строку закрывающий и открывающий теги группы. А теги опций последовательно после условия. После цикла закрывающий тег группы и списка.

Это разве сложно?
Ответить с цитированием
  #14 (permalink)  
Старый 08.01.2016, 00:28
Интересующийся
Отправить личное сообщение для Alex921 Посмотреть профиль Найти все сообщения от Alex921
 
Регистрация: 04.01.2016
Сообщений: 11

Спасибо за ваш труд, но я по вашему не сделаю так как банально сойду с ума))) Там три страны, и в каждой области есть города, в каждом городе есть районы и пригороды)) Там их столько что даже страшно представить...
А вот как список строится в базе

Район
&nbsp;&nbsp;&nbsp;&nbsp;район 1
&nbsp;&nbsp;&nbsp;&nbsp;район2
&nbsp;&nbsp;&nbsp;&nbsp;район 3
Пригород
&nbsp;&nbsp;&nbsp;&nbsp;пригород 1
&nbsp;&nbsp;&nbsp;&nbsp;пригород 2
&nbsp;&nbsp;&nbsp;&nbsp;пригород 3
Район и Пригород это тоже самое что и (район 1 или пригород 1...)

И
Пригород имеет id_value в таблице cat_board_listv
И
Район имеет id_value в таблице cat_board_listv

То есть, все в куче, слезы на глазах, и сожаление что подписался на это все...
Вот и хочется как-то через id_value заблокировать выбор, или может к каждому "району" и "пригороду" приписать что-то в базе что бы нельзя было выбрать...?
Ответить с цитированием
  #15 (permalink)  
Старый 08.01.2016, 07:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Думаю, что вам не придет в голову вывалить один список включающий в себя все страны, в них города, а в них районы и пригороды. Такие вещи выводятся связанными списками, последовательно, а значит это не есть условие, которое не позволяет решить данную задачу. SQL же и РНР как то по барабану чего там в базе, первый будет отдавать то что просят, второй выводить что получено согласно сценария. То есть это тоже не есть проблема.
А вот если списки хранятся в базе действительно так:


Район
&nbsp;&nbsp;&nbsp;&nbsp;район 1
&nbsp;&nbsp;&nbsp;&nbsp;район2
&nbsp;&nbsp;&nbsp;&nbsp;район 3
Пригород
&nbsp;&nbsp;&nbsp;&nbsp;пригород 1
&nbsp;&nbsp;&nbsp;&nbsp;пригород 2
&nbsp;&nbsp;&nbsp;&nbsp;пригород 3
Район и Пригород это тоже самое что и (район 1 или пригород 1...)

то это не только проблема, это вообще несуразица. Какой смысл от этого списка, если каждая опция его не имеет идентификатора, вы что собираетесь в запросах клиента и к базе парсить строку эту?

Пока в базе не будет наведен порядок, и говорить о чем-то нет смысла.
Ответить с цитированием
  #16 (permalink)  
Старый 09.01.2016, 13:21
Интересующийся
Отправить личное сообщение для Alex921 Посмотреть профиль Найти все сообщения от Alex921
 
Регистрация: 04.01.2016
Сообщений: 11

а разве нельзя сделать как-то так, что бы через скрипт блокировать?
Типа, скрипт находит id опции и приписывает к ней disabled?
Ответить с цитированием
  #17 (permalink)  
Старый 09.01.2016, 14:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

И каким образом это можно сделать, если Район и Пригород это тоже самое что и (район 1 или пригород 1...)? Конечно можно и повыпендриваться условием и подогнать под нужное, но во-первых, и не впервой повторяется, что нужно не блокировать, а выделить группы. А во-вторых нужно иметь порядок в базе, а не колотить костыли в код.

Сообщение от Alex921
Район и Пригород это тоже самое что и (район 1 или пригород 1...)
И
Пригород имеет id_value в таблице cat_board_listv
И
Район имеет id_value в таблице cat_board_listv
Может все таки не строкой в базе се описано, коли есть идентификаторы и "одно и тоже", а просто вы не можете пояснить толково что имеется в базе?

Данные в базе должны быть структурированы, и коли речь о странах, городах и их районах, то - есть таблица стран, есть таблица городов и есть таблица районов. Таблицы связаны по первичному ключу. Таблица районов (в примере table_district) содержит поле собственного идентификатора, идентификатор города, которому принадлежит район. Связь города со страной осуществляется по таблице городов. Принадлежность к пригороду или району нужно определять не идентификатором записи, а полем типа SET с двумя значениями.

Дамп таблицы:

Код:
-- Структура таблицы `table_district`

CREATE TABLE IF NOT EXISTS `table_district` (
  `id_district` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Иентификатор района',
  `id_city` int(11) NOT NULL COMMENT 'Идентификатор города',
  `name` varchar(150) NOT NULL COMMENT 'Наименование района'',
  `district` set('Пригород','Район') NOT NULL COMMENT 'Район/Пригород',
  PRIMARY KEY (`id_district`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;

-- Дамп данных таблицы `table_district`

INSERT INTO `tmp` (`id_district`, `id_city`, `name`, `district`) VALUES
(8, 2, 'Имя 1', 'Пригород'),
(9, 1, 'Имя2', 'Район'),
(10, 2, 'Имя 3', 'Район'),
(11, 2, 'Имя 4', 'Район'),
(12, 2, 'Имя 5', 'Пригород'),
(13, 2, 'Имя 6', 'Пригород');
Пусть запрашиваются районы/пригороды города с ID=2:

$q = mysql_query('SELECT id_district, name, district FROM table_district WHERE id_city=2 ORDER BY district');
while($r = mysql_fetch_assoc($q)) $json[] = $r;

exit(json_encode($json, JSON_UNESCAPED_UNICODE));


Клиент получит JSON:

Код:
[
    {"id_district":"8","name":"Имя 1","district":"Пригород"},
    {"id_district":"12","name":"Имя 5","district":"Пригород"},
    {"id_district":"13","name":"Имя 6","district":"Пригород"},
    {"id_district":"10","name":"Имя 3","district":"Район"},
    {"id_district":"11","name":"Имя 4","district":"Район"}
]
Как построить список показывалось.

Последний раз редактировалось laimas, 09.01.2016 в 14:23.
Ответить с цитированием
  #18 (permalink)  
Старый 10.01.2016, 05:14
Интересующийся
Отправить личное сообщение для Alex921 Посмотреть профиль Найти все сообщения от Alex921
 
Регистрация: 04.01.2016
Сообщений: 11

laimas,
Я действительно тупо объяснил, попробую по другому, не будем рассматривать районы и пригороды как таковые.
Возьмем другие значения
Имеем select Утюги
Опций для построение списка для "Утюги"
Тип подошвы (id=1)
&nbsp;&nbsp;&nbsp;&nbsp;тип 1 (id=2)
&nbsp;&nbsp;&nbsp;&nbsp;тип 2 (id=3)
&nbsp;&nbsp;&nbsp;&nbsp;тип 3 (id=4)
Материал корпуса (id=5)
&nbsp;&nbsp;&nbsp;&nbsp;Материал 1 (id=6)
&nbsp;&nbsp;&nbsp;&nbsp;Материал 2 (id=7)
&nbsp;&nbsp;&nbsp;&nbsp;Материал 3 (id=8)
Задача таже: запретить выбор в списке "Тип подошвы" и "Материал корпуса" все остальное выбирать в списке можно...
Разделять список на "Тип подошвы" и "Материал корпуса" нельзя, так как там такое кол-во этих свойств что просто ужас...
P.S. Благодарю за то что не забили...
Ответить с цитированием
  #19 (permalink)  
Старый 10.01.2016, 10:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Вы что издеваетесь? Как можно запретить некий ID, а остальные пожалуйста?

Приведенное выше, это характеристики товара, а их не содержат в одном поле поле таблицы, это значит, что каждая группа характеристик, это свой уникальный ключ. Дальше пояснять?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как организовать выбор новости из списка (JavaScript + RSS or HTML парсер) Wolfak Общие вопросы Javascript 2 24.02.2014 14:08
Как сделать на сайте выбор шрифта пользователем и динамическое изменение введенного т angelzzz Events/DOM/Window 4 17.02.2014 05:59
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как сохранить выбор сортировки на JS после обновления страницы? deeand Общие вопросы Javascript 5 18.05.2012 16:22
Как запретить уход из фрейма в top-окно? sturm Общие вопросы Javascript 6 20.04.2008 04:20