Как исправить select что бы обработать первое значение
так оно не обрабатывается при первой загрузке страницы
Второй момент, после выбора все равно устанавливаться первое значение селекта (мелькает 2 или 3 ), но после обработки страницы все равно все время первое значение, то есть select работает не правильно ....
js ->>> onchange="document.getElementById('f').submit() что то не так делает?
или по другому вообще нужно?
<?php
if($_POST['sel']=='1')
// если так ...
else if($_POST['sel']=='2')
//а если так то ...
else if($_POST['sel']=='3')
//а если так то по другому
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<body>
<form action="" method="post" id="f">
<select name="sel" onchange="document.getElementById('f').submit()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4>4</option>
</select>
</form>
</body>
</html>
Спустя 52 минуты, 30 секунд (12.05.2010 - 01:04) Adil написал(а):
Вообще-то форма все правильно делает. При выборе какого-либо пункта, сразу срабатывает submit.
Посмотри это, сразу поймешь:
Посмотри это, сразу поймешь:
<?php
print 'Выбрано значение:'.$_POST['sel'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<body>
<form action="" method="post" id="f">
<select name="sel" onchange="document.getElementById('f').submit()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4>4</option>
</select>
</form>
</body>
</html>
Спустя 9 минут, 46 секунд (12.05.2010 - 01:14) Raito-kun написал(а):
Adil, это замечательно, но суть проблемы автора
1. он хочет, чтобы при первом запуске страницы было обработано первое значение (это я думаю можно сделать установив сюда if($_POST['sel']=='1') альтернативное условие первого запуска)
2. он хочет чтобы после выбора другого пункта и обновления страницы(отсылки параметров формы) был выбран именно этот пункт(этого сам не понимаю. нужно каким-то образом взять значения из массива POST и выставить в "selected" соответствующий пункт меню при помощи JS походу)
1. он хочет, чтобы при первом запуске страницы было обработано первое значение (это я думаю можно сделать установив сюда if($_POST['sel']=='1') альтернативное условие первого запуска)
2. он хочет чтобы после выбора другого пункта и обновления страницы(отсылки параметров формы) был выбран именно этот пункт(этого сам не понимаю. нужно каким-то образом взять значения из массива POST и выставить в "selected" соответствующий пункт меню при помощи JS походу)
Спустя 45 минут, 24 секунды (12.05.2010 - 01:59) Adil написал(а):
Цитата (Adil @ 12.05.2010 - 02:04) |
1. он хочет, чтобы при первом запуске страницы было обработано первое значение (это я думаю можно сделать установив сюда if($_POST['sel']=='1') альтернативное условие первого запуска) |
Может уже ночь, и поэтому я в этот пункт не совсем въехал..
А вот про:
Цитата (Raito-kun @ 12.05.2010 - 02:14) |
2. он хочет чтобы после выбора другого пункта и обновления страницы(отсылки параметров формы) был выбран именно этот пункт(этого сам не понимаю. нужно каким-то образом взять значения из массива POST и выставить в "selected" соответствующий пункт меню при помощи JS походу) |
Надо сделать так:
<option value="1" <?php if($_POST['sel'] == 1) print "selected"?> >1</option>
и так для каждого пункта..
P.S.для сокращения можно воспользоваться тернарным оператором.
Спустя 8 минут, 17 секунд (12.05.2010 - 02:08) Raito-kun написал(а):
Цитата |
Надо сделать так: <option value="1" <?php if($_POST['sel'] == 1) print "selected"?> >1</option> для сокращения можно воспользоваться тернарным оператором. |
уже ночь и я жестко затупил, после уроков по JS


а по поводу первого, имеется ввиду, если я правильно понял, тс хочет, чтобы при первом открытии страницы якобы уже был выбран первый пункт, тоесть мы были тут
if($_POST['sel']=='1')
//тут
если я правильно понял поможет перед всем циклом условие
if(!$_POST['sel'])
echo "1";
else if($_POST['sel']=='1')
echo "1";
else if($_POST['sel']=='2')
echo "2";
else if($_POST['sel']=='3')
echo "3";
тоесть первое условие отработает при первом запуске и продублирует дефолтный селект. в данном случае поведение при выбранной единице.
Спустя 3 минуты, 48 секунд (12.05.2010 - 02:12) Raito-kun написал(а):
лучше так
if($_POST['sel']=='1' || !$_POST['sel'])
echo "1";
else if($_POST['sel']=='2')
echo "2";
else if($_POST['sel']=='3')
echo "3";
Спустя 17 часов, 6 минут, 55 секунд (12.05.2010 - 19:18) vn214 написал(а):
C одним селектом так можно выкрутиться.
А если есть два селекта в одной форме и выбор в них осуществляется независимо друг от друга
Получается что выбор второго сбивает первый селект,то есть, после выбора во втором селекте, независимо от того что выбрано в первом, загружается первый выбор(первого естественно ) селекта и ... получается ....
Что здесь можно сделать?
А если есть два селекта в одной форме и выбор в них осуществляется независимо друг от друга
<?php
//???
//обработка селектов
//???
?>
<html>
<form action="" method="post" id="f">
<!-- выбор первого параметра-->
<select name="sel" onchange="document.getElementById('f').submit()">
<option value="">Выбор - '<?php if(!$_POST['sel])echo 'из списка'; else echo $_POST['sel']?>'</option>
<option value="a">1</option>
<option value="m">2</option>
<option value="u">3</option>
<option value="n>4</option>
</select>
<--выбор второго параметра-->
<select name="count" onchange="document.getElementById('f').submit()">
<option value="5">5</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="30">30</option>
</select>
</form>
</html>
Получается что выбор второго сбивает первый селект,то есть, после выбора во втором селекте, независимо от того что выбрано в первом, загружается первый выбор(первого естественно ) селекта и ... получается ....
Что здесь можно сделать?
Спустя 4 часа, 30 минут, 15 секунд (12.05.2010 - 23:49) parparamyk написал(а):
$sel = 1;
if($_POST)
{
switch($_POST['sel'])
{
case '0':
$sel = 0;
break;
case '1':
$sel = 1;
break;
...
}
}
$selected = array(0 => '', 1 => '' .....)
$selected[$sel] = 'selected';
<option value="1" <?php echo $selected[1]?> >1</option>
Всё должно работать
Спустя 17 часов, 41 минута, 24 секунды (13.05.2010 - 17:30) vn214 написал(а):
Насколько понял это попытка связать два селекта между собой?
Выбор в селектах не зависит друг от друга.
То есть при нажатии во втором селекте, сбиватеся первый и наоборот.
То же самое если нажать сабмит(submit).
Как можно сохранить выбор(сделанный скажем в первом селекте), после другого(второго) обращения к форме?(После нажатия на кнопку(или клика второго селекта)
Выбор в селектах не зависит друг от друга.
То есть при нажатии во втором селекте, сбиватеся первый и наоборот.
То же самое если нажать сабмит(submit).
Как можно сохранить выбор(сделанный скажем в первом селекте), после другого(второго) обращения к форме?(После нажатия на кнопку(или клика второго селекта)
_____________
Спартак - чемпион