За последние 24 часа нас посетили 50002 программиста и 1688 роботов. Сейчас ищут 1065 программистов ...

Прошу помогите объединить прыгающее меню и радиокнопку

Тема в разделе "PHP для новичков", создана пользователем A.B.C., 28 окт 2010.

  1. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    Здравствуйте, комрады выручайте.
    Почти не знаю Яву скрипт, использовал в дримвивере прыгающее меню для того чтобы сразу после выбора из списка перепрыгнуть в нужное место через GET запрос.
    Вот скрипт 1.php:

    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    2. <title>Документ Без Имени</title>
    3. <script type="text/JavaScript">
    4. <!--
    5. function MM_jumpMenu(targ,selObj,restore){ //v3.0
    6.  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
    7.  if (restore) selObj.selectedIndex=0;
    8. }
    9. //-->
    10. </head>
    11.  
    PHP:
    1. <?php if (isset($_POST['kuda'])) {print "Курит?".$_POST['kuda'];}?>
    2. <?php if (isset($_POST['kuda'])) {print "Возраст?".$_POST['kuda'];}?>
    HTML:
    1. <form name="sd" method="get" action="1.php">
    2. Вы курите?
    3.  
    4. <input name="smok" type="radio" value="Да" checked="checked">Да
    5. <input name="smok" type="radio" value="Нет">Нет
    6.  
    7. <select  name="menu1"   onChange="MM_jumpMenu('parent',this,0)">
    8.  
    9. <option value="1.php?T=1">Вам до 30 лет</option>
    10. <option value="1.php?T=2">Вам от 30 лет до 60</option>
    11. <option value="1.php?T=3">Вам больше 60 лет </option>
    12.  
    13. </form>
    14. </body>
    В итоге на экране не работает радиокнопка, отвечающая за курите или нет. По умолчанию стоит "Да", при выборе возраста мы переходим по ссылке
    1.php?T=1..3
    и видем в адресной строке успешно:
    http://localhost/ismok/1.php?T=2

    но не в окне браузера, не в адресной строке нет переменной smok!!!

    Как ее можно передать при помощи ИМЕННО такого меню, без кнопки отправить....именно прыгая по GET параметру???

    Возможно надо как то ее соединить с описанием Java Scripts, что стоит в заголовках, но как???

    Помогите.
     
  2. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    тут два варинта. я бы начал со следующего:

    HTML:
    1.  
    2.  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    3.  <title>Документ Без Имени</title>
    4.  </head>
    5.  
    6.  <body><form id="sd_form" name="sd" method="get" action="1.php">
    7.  Вы курите?
    8.  
    9.  <input name="smok" type="radio" value="Да" checked="checked">Да
    10.  <input name="smok" type="radio" value="Нет">Нет
    11.  
    12.  <select  name="menu1"  onChange="this.form.submit();">
    13.  
    14.  <option value="1">Вам до 30 лет</option>
    15.  <option value="2">Вам от 30 лет до 60</option>
    16.  <option value="3">Вам больше 60 лет </option>
    17.  
    18.  </form>
    19.  </body>
    затем в 1.php лови в массиве $_GET значения smok и menu1
    $_GET['smok'], $_GET['menu1']
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вместо кнопок используй ссылки, их тоже можно декорировать как кнопки.

    ответы можно хранить в $_SESSION - и дело с концом.
     
  4. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    вообще, надо сказать, нелогичное поведение формы ты задумал, с точки зрения юзабилити. если человек захочет сначала выбрать возраст, то выбрать курит или нет ему уже не судьба будет, так как сработает сабмит.
    правильнее выкинуть вообще onChange из select и добавить кнопку сабмита:
    <input type='sumbit' value= 'Учесть мой голос'/>
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если надо чтобы было по одному вопросу на странице - это так-то.

    если надо чтобы было по несколько вопросов на страницу, но без кнопки "отправить" - можно. Но не нужно. Вдруг человек тыкнул не туда, и хочет перетыкнуть, а форма уже ушла. Это не красиво.

    Делай с кнопкой и не парься.
     
  6. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    engager
    Спасибо, огромное!!! Все заработало, по поводу вашего замечания по нелогичности, это просто здесь так кажется...на самом деле там технические термины...я для простоты так написал.

    Хотел спросить, а это не опасно?...с точки зрения безопасности скрипта, его взлома???? ну ваш вариант...там в GET запросе в адресной строке...куча процентов и вопросов откуда они взялись?...
     
  7. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    igordata
    Вместо радиокнопок ссылки?????? А куда они будут вести? При нажатии ведь будет сразу же перенаправление на страницу, а мне нужно 2 выбора сделать

    Курит ли человек и его возраст?
     
  8. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    смотря, что ты дальше собираешься с этим делать. если подставлять эти значения в sql-запросы, то есть риск sql-инъекции. проценты - неопасно. это так называемая url-кодировка. Если не хочешь, чтоб они были в адресной строке, используй пост-запрос. action='post' вместо action='get' и $_POST вместо $_GET соответственно
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    A.B.C.
    если два то никак уже кроме как либо через js мониторить заполненность обязательных полей по клику на любом из них. Или кнопка. Больше вариантов нету.
    Выбирай какой больше нра
     
  10. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    engager

    igordata

    Спасибо!
     
  11. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    engager


    Подскажи еще зачем строка в атрибутах формы

    id="sd_form"

    работает и без нее...?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    A.B.C.
    это ее униальное имя. id на странице может быть только один. используется в js и css
     
  13. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    A.B.C.
    да, можешь выкинуть. сначала хотел использовать твою
    function MM_jumpMenu(targ,selObj,restore){
    и в ней вызвать сабмит формы:
    document.getElemenById('sd_form').submit();
    но решил это запихать сразу в
    onChange="this.form.submit();"
     
  14. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    igordata
    engager


    В том то и дело блин, я хотел вставить туда ID в форму[css] #smok
    select {height: auto;
    width: 200px;}[/css]

    чтоб сетекты были одинакового размера


    а вот сейчас вставил уже в большой скрипт почему то не робит...сижу вот разбираюсь :((
     
  15. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
  16. A.B.C.

    A.B.C. Активный пользователь

    С нами с:
    3 мар 2010
    Сообщения:
    109
    Симпатии:
    0
    engager
    Можешь ответить очень нужна твоя помощь...