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

MPAK

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

Данные берутся в цикле из базы. Но! Надо сделать, чтобы активным был пункт, с которого пришли с предыдущей страницы. Т.е. мы пришли со страницы 3 и надо чтобы он стоял selected.
 

Panchous

Павел
Учи HTML:
у элемента списка есть атрибут selected
просто поставь его там, где нужно
 

MPAK

Guest
Спасибо за идею, но КАК это сделать, если он строится динамически в цикле? И когда получает значение, которое мне нужно (равно какой-то там переменной) чтобы оный селектед рисовался?
 

Фанат

oncle terrible
Команда форума
в программировании есть такой основополагающий элемент, как условный переход.
Осуществляется проверка некоего условия, и, в зависимости от результата, выполняется или не выполняется какое-то действие.
То есть - именно то, что тебе нужно.
Во многих языках, в том числе и в пхп, условный переход реализуется с помощью оператора if
подробнее ты можешь прочитать о нем:
http://www.php5.ru/study/syntax#cond
http://www.php.net/manual/ru/language.control-structures.php#control-structures.if

Можешь не благодарить.
я думаю, что помочь освоить программирование товарищу - это священный долг каждого!
 

usascha

Новичок
<select name="authors_id">
<?
$query = mysql_query("SELECT *
FROM authors
ORDER BY author_name ASC");

while ($row = mysql_fetch_array($query)) {
$authors_id = $row['author_id'];
$authors_name = $row['author_name'];

if($authors_id != $author_id){
echo "<option value=".$authors_id.">".$authors_name."</option>\n";
} else {
echo "<option value=".$authors_id." selected>".$authors_name."</option>\n";
}
}
?>
</select>
 

Gas

может по одной?
имхо, лучше
PHP:
$sel = ($authors_id != $author_id) ? '' : ' selected';
echo '<option value="'.$authors_id.'"'.$sel.'>'.$authors_name."</option>\n";
 

advocat

developer
Gas
я обычно это одной строкой пишу :)
напр:
PHP:
foreach ($array as $key=> $value) {
    echo '<option value="'.$key.'"'.($key == $key_selected ? ' selected' : '').'>'.$value.'</options>';
}
 

usascha

Новичок
Я не волшебник - только учусь. Что нарыл, то и отдал. Но все сокращения обящательно учту и применю.
Как говориться, век живи - век учись.

Но вот что интересно, я подумал. А если у меня на странице таких менюшек 4-5 штук, то какой вариант быстрее: foreach или тернарный оператор?
 

Фанат

oncle terrible
Команда форума
Сашечка.
Во-первых, тренарный оператор и форич - совершенно разные вещи.
во-вторых, ты всерьез спрашиваешь про разницу в скорости?
Если да, то это просто кошмар

advocat
Твой способ ужасен. Своей нечитабельностью.
Способ Gas прекрасно читается и великолепно переносится в шаблон.

Экономия твоя фальшивая.
 

MPAK

Guest
Фанат
Гы :) такого вежливого и корректного обижания моих умственных способностей ещё не встречал:) Повеселился.
2 Все: Спасибо. Огромное!
 

Alexandre

PHPПенсионер
лично я создаю массив $selected на каждый select
далее если например выбран элемент №4 то $sel_id = 4;

$selected[ $sel_id] = "selected";

в шаблоне или нет (это зависит уже от стиля) я вывожу:
PHP:
<option value="$key[$i]" $selected[$i]  > $value[$i] </options>
;)
 
Сверху