[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод <select>и выделение нужных <option>
Denhell
Имеется массив $category, который получается методом explode из массива $myrow_edit[category]. Далее создаю поле селект, опции которого достаю из БД. И необходимо сделать опции тега селект выделенными те, которые равны с элементами массива $category. Делаю следующее.

echo "<select multiple name='category[]' size='6'>

$category = explode(",",$myrow_edit[category]);

// загрузка категорий

$result_category=mysql_query("SELECT category_name FROM category");
$count = mysql_num_rows($result_category);

for (
$i=0; $i<$count; $i++) {
$var = mysql_result($result_category, $i);
foreach (
$category as $v) {
if (
$v == $var) {
printf ("
<option selected value='%s'>%s", $var, $var);}
else { printf ("
<option value='%s'>%s", $var, $var);}}}

echo "
</select>"

Но при таком коде каждая опция повторяется по столько раз, сколько элементов в массиве $category. Как это обойти? У кого какие идеи будут?



Спустя 2 часа, 14 минут, 47 секунд (16.09.2010 - 06:09) Lenarfate написал(а):
Цитата
Но при таком коде каждая опция повторяется по столько раз, сколько элементов в массиве $category. Как это обойти? У кого какие идеи будут?

судя по этому коду, он вообще не должен работать

Спустя 1 час, 31 минута, 28 секунд (16.09.2010 - 07:40) Kuliev написал(а):
Denhell
Посмотри как здесь выводят данные в таблицу и переделай также под свой селект
СМОТРЕТЬ ЗДЕСЬ

Спустя 1 час, 46 минут, 21 секунда (16.09.2010 - 09:27) Denhell написал(а):
Цитата
судя по этому коду, он вообще не должен работать

Будет, т.к. это только часть кода.
Цитата
Посмотри как здесь выводят данные в таблицу и переделай также под свой селект

С этим проблем нет, ведь задача состоит не просто вывести, но и сравнить с массивом, а если значения массива совпадают, то сделать эти опции выделенными.

Спустя 12 минут, 18 секунд (16.09.2010 - 09:39) Kuliev написал(а):
Цитата (Denhell @ 16.09.2010 - 11:27)
Цитата
судя по этому коду, он вообще не должен работать

Будет, т.к. это только часть кода.
Цитата
Посмотри как здесь выводят данные в таблицу и переделай также под свой селект

С этим проблем нет, ведь задача состоит не просто вывести, но и сравнить с массивом, а если значения массива совпадают, то сделать эти опции выделенными.

Ну так сравнивай, в чем проблема?

Спустя 3 минуты, 48 секунд (16.09.2010 - 09:43) Michael написал(а):
Вот без этого:
foreach ($category as $v) {

просто каждую опцию проверяй находится ли она в массиве. Типа так:

$var = mysql_result($result_category, $i);
$sel = '';
if (in_array($var, $category)) $sel = 'selected';
echo '<option ' . $sel . 'и так далее...'


Спустя 15 минут, 27 секунд (16.09.2010 - 09:58) Denhell написал(а):
Цитата (Michael @ 16.09.2010 - 06:43)
Вот без этого:
foreach ($category as $v) {

просто каждую опцию проверяй находится ли она в массиве. Типа так:

$var = mysql_result($result_category, $i);
$sel = '';
if (in_array($var, $category)) $sel = 'selected';
echo '<option ' . $sel . 'и так далее...'

Вот спасибо! Как раз что надо! Все заработало!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.