Какая разница кто эти списки будет готовить? 
	Вот как понять "опции уже в базе"? Если код списков готовятся, значит нет никаких опций в базе, есть данные для них, и вам не опции запрещать надо, а описать группу в списке, а делается это тем, на что я давал ссылку - ознакомились? А для того чтобы это сделать, нужно соответствующие этому данные получить, структуру их, а дальше уже копейки.  | 
	
		
 laimas, Это для вас копейки, так как вы знаете что и как, а для меня ж*па... 
	 | 
	
		
 :D  
	Копейки, уверяю. Я не знаю как делается запрос на сервере и что возвращает, но принцип должен быть следующим - запрос должен возвращать записи, которые отсортированы по родителю. Вот пример, где объект, это возвращенный сервером запрос в базу. 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-код списка, и так же нужно было бы поступать и на сервере. И если поступать так, то чуть изменится суть, но принцип будет тот же. Сперва в строку открывающие теги списка и группы, а далее сравнение переменной с текущей группой, и если не равно, то присвоить ей текущую группы, и добавить в строку закрывающий и открывающий теги группы. А теги опций последовательно после условия. После цикла закрывающий тег группы и списка. Это разве сложно? :)  | 
	
		
 Спасибо за ваш труд, но я по вашему не сделаю так как банально сойду с ума))) Там три страны, и в каждой области есть города, в каждом городе есть районы и пригороды)) Там их столько что даже страшно представить... 
	А вот как список строится в базе Район     район 1     район2     район 3 Пригород     пригород 1     пригород 2     пригород 3 Район и Пригород это тоже самое что и (район 1 или пригород 1...) И Пригород имеет id_value в таблице cat_board_listv И Район имеет id_value в таблице cat_board_listv То есть, все в куче, слезы на глазах, и сожаление что подписался на это все... Вот и хочется как-то через id_value заблокировать выбор, или может к каждому "району" и "пригороду" приписать что-то в базе что бы нельзя было выбрать...?  | 
	
		
 Думаю, что вам не придет в голову вывалить один список включающий в себя все страны, в них города, а в них районы и пригороды. Такие вещи выводятся связанными списками, последовательно, а значит это не есть условие, которое не позволяет решить данную задачу. SQL же и РНР как то по барабану чего там в базе, первый будет отдавать то что просят, второй выводить что получено согласно сценария. То есть это тоже не есть проблема. 
	А вот если списки хранятся в базе действительно так: Район     район 1     район2     район 3 Пригород     пригород 1     пригород 2     пригород 3 Район и Пригород это тоже самое что и (район 1 или пригород 1...) то это не только проблема, это вообще несуразица. Какой смысл от этого списка, если каждая опция его не имеет идентификатора, вы что собираетесь в запросах клиента и к базе парсить строку эту? Пока в базе не будет наведен порядок, и говорить о чем-то нет смысла.  | 
	
		
 а разве нельзя сделать как-то так, что бы через скрипт блокировать? 
	Типа, скрипт находит id опции и приписывает к ней disabled?  | 
	
		
 И каким образом это можно сделать, если Район и Пригород это тоже самое что и (район 1 или пригород 1...)? Конечно можно и повыпендриваться условием и подогнать под нужное, но во-первых, и не  впервой повторяется, что нужно не блокировать, а выделить группы. А во-вторых нужно иметь порядок в базе, а не колотить костыли в код.  
	Цитата: 
	
 Данные в базе должны быть структурированы, и коли речь о странах, городах и их районах, то - есть таблица стран, есть таблица городов и есть таблица районов. Таблицы связаны по первичному ключу. Таблица районов (в примере table_district) содержит поле собственного идентификатора, идентификатор города, которому принадлежит район. Связь города со страной осуществляется по таблице городов. Принадлежность к пригороду или району нужно определять не идентификатором записи, а полем типа SET с двумя значениями. Дамп таблицы: Код: 
	-- Структура таблицы `table_district`
$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: Код: 
	[ | 
	
		
 laimas, 
	Я действительно тупо объяснил, попробую по другому, не будем рассматривать районы и пригороды как таковые. Возьмем другие значения Имеем select Утюги Опций для построение списка для "Утюги" Тип подошвы (id=1)     тип 1 (id=2)     тип 2 (id=3)     тип 3 (id=4) Материал корпуса (id=5)     Материал 1 (id=6)     Материал 2 (id=7)     Материал 3 (id=8) Задача таже: запретить выбор в списке "Тип подошвы" и "Материал корпуса" все остальное выбирать в списке можно... Разделять список на "Тип подошвы" и "Материал корпуса" нельзя, так как там такое кол-во этих свойств что просто ужас... P.S. Благодарю за то что не забили...  | 
	
		
 Вы что издеваетесь? Как можно запретить некий ID, а остальные пожалуйста? 
	Приведенное выше, это характеристики товара, а их не содержат в одном поле поле таблицы, это значит, что каждая группа характеристик, это свой уникальный ключ. Дальше пояснять?  | 
| Часовой пояс GMT +3, время: 10:19. |