Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

  • Закрытая тема Тема закрыта

Список selected в PHP

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 13 Февраль 2011 - 11:56

У меня есть список категорий из БД. Нужно что бы стандартная (по дефолту) категория была категория №1 или "Общие". Для этого надо использовать атрибут selected в теге option. Но как это реализовать в данном коде?
		<select name='select[]'>
<?php
do {
$myrow['id']=1 ? $sel = "selected='selected'" : '';
printf ("<option value='%s' $sel>%s</option>", $myrow['id'], $myrow['name']);
}
while ($myrow = mysql_fetch_array($result));
?>
</select>

При таком выполнении результат обработчика
!isset($_POST['submit']) ? die('Кнопка не нажата') : '';
!empty($_POST['select']) ? $select=$_POST['select'] : die('Категория не выбрана');
print_r ($select);

будет таковым

Array ( [0] => selected= )


Если вообще из формы все, что связано с selected - все отлично работает. Как правильно реализовать selected, если мне нужно его прикрепить к категории 1?

 

 

  • 0

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 13 Февраль 2011 - 12:19

ты не одной строкой выводи данный элемент, а 2-мя, а в разрыве проверь условие, если мол условие совпадает, то выполняешь деуствие, если нет, пропускаешь.
я делаю так, не как ты, но смысл понятен:
			{
echo "<option";
if($c['id'] == $a['category'])
{
echo " selected ";
}
else
{
echo " ";
}
echo "value=\"".$c['id']."\">".$c['name']."</option>";
}

  • 0

#3 JackBV

JackBV
  • Пользователь
  • 3 сообщений
  • Репутация: 0

Отправлено 13 Февраль 2011 - 12:19

<select name='select'>
<?
$selid = 1;
$sel = '';
do {
if ($myrow == $selid) { $sel = 'selected'; }
echo "<option value='".$myrow["id"]."' ".$sel.">".$myrow["name"]."</option>";
}
while ($myrow = mysql_fetch_array($result));
?>
</select>


Вот так я бы написал этот код...
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 13 Февраль 2011 - 17:15

Banderas, почему имя селекта name='select[]'? Квадратные скобки нужны только для организации массива, тут у тебя список выбора. Мы выбираем из кучи предлагаемых значений одно единственное (Конечно про мультивыборку тема не затрагивает).
А вообще такое чувство что кавычка в value не была закрыта... Не понятно почему такое значение передавалось.

<?php
if( !empty($_POST['submit']) )
{
if( !empty($_POST['select']) )
$select=$_POST['select'];
else
die('Категория не выбрана');

echo $select;
} else {
$result = mysql_query("...");
?>
<html>
<head>
...
</head>
<body>
<form method='post' action=''>
<select name='select'>
<?php
while ( $myrow = mysql_fetch_array($result) );
{
$sel = $myrow['id']=1 ? " selected='selected'" : "";
echo "<option value='{$myrow['id']}'{$sel}>{$myrow['name']}</option>";
}
?>
</select>
<input type='submit' name='submit' value='Передать' />
</form>
</body>
</html>
<?php } ?>

  • 0

#5 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 21 Февраль 2011 - 14:21

А я бы сократил этот код
$sel = $myrow['id']=1 ? " selected='selected'" : ""; 
echo "<option value='{$myrow['id']}'{$sel}>{$myrow['name']}</option>";


До вот этого
echo '<option value="'.$myrow['id'].'" '.($myrow['id']=1 ? ' selected="selected"' : '').'>'.$myrow['name'].'</option>';



И еще, рекомендую везде, где выводимый текст обрамляется кавычками, использовать одинарные кавычки, так как это работает быстрее. Интерпретатор PHP не ищет в таких строках переменные PHP и, соответственно, обрабатывает быстрее.
  • 0

#6 Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 21 Февраль 2011 - 16:00

И еще, рекомендую везде, где выводимый текст обрамляется кавычками, использовать одинарные кавычки, так как это работает быстрее. Интерпретатор PHP не ищет в таких строках переменные PHP и, соответственно, обрабатывает быстрее.

cпасибо я даже о таком не знал
  • 0



Оформление форума – IPBSkins.ru