Выпадающий список select

N
На сайте с 08.10.2011
Offline
188
617

Задача, чтобы при нажатие кнопки данные из select не сбрасывались к первоначальному состоянию

<form form action='' method='post' style="margin-top: 100px; background: #FFCC00; width: 1000px; height:500px;">

<?php

echo '<select name="ob">';
while ($row = mysql_fetch_assoc($resulta)) {

if($row['nap'] == $_POST['ob'])
{
echo '<option selected value ='.$row['nap'].'>'.$row['nap'].'</option>';
}

else
{
echo '<option value = '.$row['nap'].'>'.$row['nap'].'</option>';
}
}
echo '</select>';

$ob=$_POST['ob'];
echo $ob;

?>


<input value="Найти" type="submit">
</form>

В программировании нуб, подскажите друзья :)

D.iK.iJ
На сайте с 26.05.2013
Offline
225
#1

Добавить просто <option selected насколько помню. Попробуйте сразу к 1 option из скрита. Если нет, то ко 2 :)

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
дани мапов
На сайте с 06.09.2012
Offline
204
#2

Надо двойные кавычки поставить в двух строчках


<form form action='' method='post' style="margin-top: 100px; background: #FFCC00; width: 1000px; height:500px;">

<?php

echo '<select name="ob">';
while ($row = mysql_fetch_assoc($resulta)) {

if($row['nap'] == $_POST['ob'])
{
echo '<option selected value ="'.$row['nap'].'">'.$row['nap'].'</option>';//тут добавляем кавычки
}

else
{
echo '<option value = "'.$row['nap'].'">'.$row['nap'].'</option>';//тут добавляем кавычки
}
}
echo '</select>';

$ob=$_POST['ob'];
echo $ob;

?>


<input value="Найти" type="submit">
</form>
Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
K
На сайте с 03.06.2015
Offline
45
#3

Дарю. Рендерит любые списки с группами и без и с селектед для групп и без. Выбранные опции отмечаются сереньким.


@param array data ключ-значение
@param mixed default - индексный массив выбранного или строка, или нул
$render_options = function($data,$default=null) {

if($default)
$default=(array)$default;

$selected=function(&$key) use(&$default) {
if(empty($default))
return null;
if(($index=array_search($key,$default))!==false) {
unset($default[$index]);
return ' style="background-color:#ddd;" selected';
}
};

$render=function($array) use(&$render,$selected){
$a=array();
foreach($array as $key=>$value) {
if(is_array($value))
$a[]='<optgroup label="'.$key.'">'.$render($value).'</optgroup>';
else
$a[]='<option value="'.$key.'"'.$selected($key).'>'.$value.'</option>';
}
return join('',$a);
};

return $render($data);
}


---------- Добавлено 11.06.2015 в 13:16 ----------

А, нуб. Не заметил, хоть по кодам оно самое.

Надо сделать массив из запроса, вида ключ-значение


$data=array();
while ($row = mysql_fetch_assoc($resulta))
$data[$row['nap']]=$row['nap'];

и применить


echo '<select name="ob">'.$render_options($data,$_POST['ob']).'</select>';

$_POST['ob'] должен быть, может быть пустой, но быть должен, или сперва надо проверить.

---------- Добавлено 11.06.2015 в 13:39 ----------

Кстати это иллюстрация как делать не надо и как надо делать по шаблону MVC. Разделяем данные и рендер и властвуем. Иначе лапша задушит.

---------- Добавлено 11.06.2015 в 13:47 ----------

Для списка с группами массив должен быть с "группами" где ключ - имя группы, например


$data=array(
'Жигули'=>array(1=>'копейка',6=>'шоха',9=>'зубила'),
'Тойота'=>array(1=>'бочка',2=>'крузак',3=>'ниссан санни'),
);

тойота ниссан санни - это из анекдота.

MYSQL PHP JS HTML CSS SEO TXT США СССР

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий