Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Начальное значение "select" из БД.

49K
31 января 2011 года
Dexogen
22 / / 06.12.2010
Имеется следующий код:
 
Код:
<select name="podr" id="podr" style="width:150;">
    <option value="0">без подразделения</option>
    <option value="1">подразделение 1</option>
    <option value="2">подразделение 2</option>
    <option value="3">подразделение 3</option>
    <option value="4">подразделение 4</option>
    <option value="5">подразделение 5</option>
    <option value="6">подразделение 6</option>
</select>

Из базы данных в переменную [COLOR="Purple"]$podr[/COLOR] считывается целочисленное значение, соответствующее подразделению. Каким образом сделать необходимую опцию начальной (т.е. [COLOR="Red"]selected[/COLOR][COLOR="Purple"]="selected"[/COLOR]) в зависимости от значения переменной $podr?
277
31 января 2011 года
arrjj
1.7K / / 26.01.2011
 
Код:
<select name="podr" id="podr" style="width:150;">
<?php
$sel='selected="selected"';
    echo '<option value="0" '.($podr==0?$sel:'').'>без подразделения</option>';
for($i=1;$i<=6;$i++)
    echo '<option value="'.$i.'" '.($podr==$i?$sel:'').'>подразделение '.$i.'</option>';
?>
</select>

Както так?
274
31 января 2011 года
Lone Wolf
1.3K / / 26.11.2006
Связка один ко многим? т.е. один пункт будет иметь несколько подпунктов, НО каждый подпункт имеет только один родительский пункт?
Если да, то проще пихать все в одну таблицу, и добавить в нее поле parent_id.
Выбирать да, можно сабмитить, получать занчения.. но лучше организовать это через Ajax, на первый селекст ставим onchange и xhr-для получение подкатегорий, вставляя их на страницу ЖСом.
49K
31 января 2011 года
Dexogen
22 / / 06.12.2010
Через цикл, точно! Спасибо огромное! Кстати спасибо за новый способ экранирования кавычек! Я раньше экранировал вот так [COLOR="Blue"]\"[/COLOR]

Тогда следующий вопрос. В зависимости от опции, выбранной в селекте, будет появляться новый селект с подпунктами. У каждого селекта свои подпункты. Как это возможно сделать? Создать для каждой опции таблицу в БД и при выборе пункта производить SUBMIT и подгружать содержимое в селект?
49K
31 января 2011 года
Dexogen
22 / / 06.12.2010
Точно! Т.е. вывод подкатегорий будет запросом типа "select [COLOR="Red"]name[/COLOR] from[COLOR="Red"] struct[/COLOR] where [COLOR="Red"]parent_id[/COLOR]=[COLOR="Blue"]$id[/COLOR]". Хм, гениально! Получается, количсетво вложений ограниченно только фантазией. Каким образом можно оптимизировать скорость поиска, если элементы будет разбросаны по таблице?

Возникает новая проблема. Если пытаться извлечь имена, например, из 0-ого уровеня, т.е. запросом "select name from struct where parent_id" mysql_fetch_assoc выдаёт ассоциативный массив, который выводит всё разом... Можно ли как-то обращаться поэлементно к нему?
Нашел функцию вытаскивания дерева. Может ее можно как-то приспособить.

Код:
function ShowTree($ParentID, $lvl) {

global $link;
global $lvl;
$lvl++;

$sSQL="SELECT id, name, parent_id FROM struct WHERE parent_id=".$ParentID." ORDER BY name";
$result = mysql_query($sSQL);

if (mysql_num_rows($result) != 0) {
    echo("<UL>\n");
    while ( $row = mysql_fetch_array($result) ) {
        $ID1 = $row["id"];
        echo("<LI>\n");
        echo("<A HREF=\""."?ID=".$ID1."\">".$row["name"]."</A>"." \n");
        ShowTree($ID1, $lvl);
        $lvl--;
        }
    echo("</UL>\n");
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог