Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите объединить SELECT и Радиокнопку
Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите объединить SELECT и Радиокнопку

Страниц (1): [1]
 

1. A.B.C. - 28 Октября, 2010 - 16:58:20 - перейти к сообщению
Задача такая, есть радиокнопка и два варианта к ней, ниже стоят 3 джамп меню...т.е. всплывающих списка, которые при выборе сразу прыгают по ссылке и передают переменные.
Юзер выбирает свой вариант кнопки, а затем выбирает в меню нужный пункт и две переменных тут же летят в исполняющий скрипт. Но чскрипт робит только если меню одно!!! Если их два или 3 то уже все...он запоминает как я понимаю последнее имя селекта и работает только с ним:

1.php

CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/JavaScript">
  2. <!--
  3. function MM_jumpMenu(targ,selObj,restore){ //v3.0
  4.   eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  5.   if (restore) selObj.selectedIndex=0;
  6. }
  7. //-->
  8. </script>


PHP:
скопировать код в буфер обмена
  1. <?PHP if (isset($_POST['smok'])) {print "Курит?".$_POST['smok'];}?>
  2. <?PHP if (isset($_POST['menu1'])) {print "Возраст?".$_POST['menu1'];}?>

CODE (html):
скопировать код в буфер обмена
  1. <form name="sd"  method="POST" action="1.php">
  2. Вы курите?
  3. <input name="smok" type="radio" value="Да" checked="checked">Да
  4. <input name="smok" type="radio" value="Нет">Нет
  5. <br>
  6. <select  name="menu1"   onChange="this.form.submit();">
  7. <option value="T=1">Вы женщина и вам до 30 лет</option>
  8. <option value="T=2">Вы женщина и вам от 30 лет до 60</option>
  9. <option value="T=3">Вы женщина и вам больше 60 лет </option>
  10. </select>
  11. <br>
  12. <select  name="menu1"   onChange="this.form.submit();">
  13. <option value="T=4">Вы мужчина и вам до 30 лет</option>
  14. <option value="T=5">Вы мужчина и вам от 30 лет до 60</option>
  15. <option value="T=6">Вы мужчина и вам больше 60 лет </option>
  16. </select>
  17. <br>
  18. <select  name="menu2"   onChange="this.form.submit();">
  19. <option value="T=7">Вы подросток и вам младше 10 лет</option>
  20. <option value="T=8">Вы подросток и вам от 10 до 14 лет </option>
  21. <option value="T=9">Вы подросток и вам от 14 до 18 лет </option>
  22. </select>
  23. </form>
2. OrmaJever - 28 Октября, 2010 - 17:06:30 - перейти к сообщению
во-первых код нужно писать в специальных тегах!
во-вторых у каждого меня должено быть разное имя и потом каждое меню будет с разным ключём масива.
$_POST['menu1']
$_POST['menu2']
3. A.B.C. - 28 Октября, 2010 - 17:13:49 - перейти к сообщению
У меня сейчас это все робит нормально, только в форме стоит GET метод передачи, и нет радиокнопки...при выборе прилетают нужные переменные все как надо ...единственное, что я не могу их заставить флажок прицепить как-то...
(Добавление)
Цитата:
во-вторых у каждого меня должено быть разное имя и потом каждое меню будет с разным ключём масива.


причем имя у всех селектов одно и тоже...
(Добавление)
и селект у меня вот такой без радиокнопки который
CODE (html):
скопировать код в буфер обмена
  1. <select  name="menu1"   onChange="MM_jumpMenu('parent',this,0)">
4. zardoz - 28 Октября, 2010 - 23:05:26 - перейти к сообщению
A.B.C. пишет:
onChange="this.form.submit();"

Всё, дело в этом. Любой первый измененный список посылает через форму все данные других списков, и те списки куда юзер еще не дошел.
Можно изменить логику:
1) добавить все же кнопку типа submit (и убрать в списках onChange="this.form.submit();)
2) поставить 3 списка перед радиокнопкой (тоже убрать в списках onChange="this.form.submit();). В радиокнопке изначально не выставлять checked, а как только юзер щелкнет по радиокнопке (OnChange), отловить событие и послать form.submit()

С уважением.

 

Powered by ExBB FM 1.0 RC1