Построение выпадающего списка

RASAMAHA

Новичок
Построение выпадающего списка

Здравствуйте, проблема такая, таблица, в ней набор с 1 по n элементов. Не разбитые на группы, а хотелось бы как раз разбить, при выводе в выпадающем списке. Чтобы было примерно так:

Первая группа
- 1 элемент
- 2 элемент
- 3 элемент
Вторая группа
- 4 элемент
- 5 элемент
- 6 элемент
...
N группа
- n-3 элемент
- n-2 элемент
- n элемент

Сейчас у меня есть таблица только с названиями элементов, точнее 2 колонки id и name, первая счетчик, вторая содержит n-элементов.

Сейчас все выводится вот так:
PHP:
$position = "";
$position .= "<select style = 'width:100%' name='position'>";
$sql = mysql_query(" SELECT * FROM position ");
    while( $row = mysql_fetch_array( $sql ) ) {
            $position .= "<option selected value='{$row['id']}'>{$row['position_name']}</option>";
    }
$position .= "</select>";
Как прикрутить группы, что добавить в таблицу? В голову лезет, создать еще один стлобец в таблице, с номерами группы. ИМХО так и надо, но не могу сообразить как это вывести(((
 

RASAMAHA

Новичок
Про этот тег я знаю. Не понимаю как реализовать. Как это в базе реализовать в одной таблице и как вытащить.
 

Gremboloid

инженера Гр...
В голову лезет, создать еще один стлобец в таблице, с номерами группы.
ну ты правильно начал, на чем застрял?
модифицировать запрос чтобы результат сортировался по стлобцу групп? (см. ORDER BY)
не можешь сформировать в цикле?
типа:
<select>
<optgroup label="Первая группа">
<option>1 элемент</option>
<option>2 элемент</option>
<option>3 элемент</option>
</optgroup>
<optgroup label="Вторая группа">
<option>4 элемент</option>
<option>5 элемент</option>
<option>6 элемент</option>
</optgroup>
</select>
 

RASAMAHA

Новичок
Про сортировку я понял и с циклом наверно разберусь. Если идея с еще одним столбоцом хорошая, то какого типа создавать столбец? Что в нем хранить ID группы (предпочтительнее) или текстовое название (с котором вроде все понятно). Если id, то как к этим циферкам прикрутить смысловое текстовое название группы?
 

Gremboloid

инженера Гр...
если записей в таблице элементов очень мало и потом не увеличится, то делай все с помощью одной таблицы (id, name, group_name)

но правильнее с точки зрения нормализации у тебя должно быть две таблицы
1. элементов (id, name, group_id)
2. групп (id, name)
где таблица1.group_id =таблица2.id

Если id, то как к этим циферкам прикрутить смысловое текстовое название группы?
для этого используют объединение таблиц (см. JOIN и Синтаксис оператора JOIN в MySQL)
 
если задача не сводится к построению многоуровневого дерева, а просто к группированию и описана полностью - достаточно одной таблицы (id, name, parent_id)
для категорий parent_id выставляется в 0. Для элементов, принадлежащих категории с id = N parent_id ставится в N
Дальше в цикле строите двумерный массив
 
Сверху