Радиобатоны и контактная форма

Максимка

Новичок
Вечер добрый! подскажите пожалуйста такой момент, у меня есть контактная форма и 2 радио батона на форме, в зависимости от выбора радио батона показываем дополнительные поля, первый радио батон при выборе показывате 3 поля для заполнения, второй радио батон 2 поля для заполнения, как можно сделать чтоб в зависимости от выбранного радиобатона передавались либо 2 либо 3 поля в email
 

Максимка

Новичок
ну да, вот пишу:

Код:
$radio = $_POST[radio1];
        if($radio=='1'){
            $news.= "Field1: " . "\r\n" . $_POST[field1] . "\r\n";
            $news.= "Field2: " . "\r\n" . $_POST[field2] . "\r\n";
        }

elseif($radio=='2'){
            $news .= "Field11: " . "\r\n" . $_POST[field11] . "\r\n";
            $news.= "Field21: " . "\r\n" . $_POST[field21] . "\r\n";
            $news.= "Field31: " . "\r\n" . $_POST[field31] . "\r\n";
        }
и вот не получается, поправьте меня если не трудно
 

Максимка

Новичок
Код:
 <div class="row">
              <span class="label">Radio1 </span>
           
             
              <div class="frame">
                  <div class="radio-area">
                      <input type="radio" required name="radio1" value="1" id="o1">
                      <label for="o1">Radio 1<em>*</em></label>
                  </div>
                  <div class="data">
                    <input type="text" required id="o1" class="text1" name="field1">
                    <input type="text" required id="o2" class="text2" name="field2">
                   
                  </div>
              </div>
             
              <div class="frame">
                  <div class="radio-area">
                      <input type="radio" required name="radio2" value="1" id="o2">
                      <label for="o2">Radio 2<em>*</em></label>
                  </div>
                  <div class="data">
                    <input type="text" required id="o11" class="text1" name="field11">
                    <input type="text" required id="o21" class="text2" name="field21">
                    <input type="text" required id="o31" class="text3" name="field31">
                  </div>
              </div>
             
          </div>
хорошим людям грех не показать html код
 

riff

Новичок
Ну с твоей ошибкой всё понятно. (WMix скажет, это его догадка).
У меня другой вопрос:
а браузер вообще позволяет отправлять форму, написанную тобой?
У тебя форма заключена в тэги <form> и отправляется по submit?
 

Максимка

Новичок
форма успешно отсылается на почту, не получается только с условием, которое бы позволяло в зависимости от выбранного радиобатона и полей получать на почту те или иные данные полей, если это первый радиобатон выбран, то приходят данные из 2-х полей, если второй выбрали - то приходят данные из 3-х полей
 

riff

Новичок
Ладно, думаю WMix извинит.
1.
<input type="radio" required name="radio1" value="1" id="o1">
<input type="radio" required name="radio2" value="1" id="o2">
одинаковые radio должны иметь одинаковое имя (name), но соответственно разные value.
Браузер сам пошлёт value из того radio, которое выбрано.

1.1. При выводе своей формы, ставь у одного из radio аттрибут checked, т.е. <input checked name="radio1" ...>

2. В $_POST[radio1] (или любом другом массиве) строковые названия ключей должны заключаться в кавычки ['radio'], числовые можно и так и так.

3. ты не ответил
У тебя форма заключена в тэги <form> и отправляется по submit?
 
Последнее редактирование:
  • Like
Реакции: WMix

Максимка

Новичок
по пункту 3, у меня для этого существует отдельная функция, которая отвечает за отправку мыла function send_mail и она включает в себя порядком 5-10 форм, но лишь в одной мне надо в зависимости от радибатона выбраного делать отсылку полей
 

riff

Новичок
Вобщем, всё, что я хотел сказать:
HTML:
<form>
    <input checked type="radio" required name="radio1" value="1">
    <div 1>
        <input type="text" required name="field1">
        ...
    </div>

    <input type="radio" required name="radio1" value="2">
    <div 2>
        <input type="text" required name="field11">
        .....
    </div>

    <input type="submit">
</form>
Предположим, форма только что появилась на экране, выбран первый radio, на экране первые два текстовые intut'a.
Ты их заполняешь, нажимаешь кнопку отправить. Браузер не даст тебе отправить эту форму, т.к. в 3-х скрытых полях указано required, а они пусты.

Ну, если у тебя нет стандартной кнопки submit, а отправляешь ajax'ом, то конечно пропустит.
 

Vuzy

Новичок
А еще в обработчике почему то проверяем разные массивы переменных
PHP:
$radio = $_POST[radio1];
        if($radio=='1'){
            $news.= "Field1: " . "\r\n" . $_POST[field1] . "\r\n";
            $news.= "Field2: " . "\r\n" . $_POST[field2] . "\r\n";
        }

elseif($radio=='2'){
сначала почему то сравнивается значение $_POST[radio1] если нет то $radio. По моему должен быть $_POST во втором условии. Но а так всё сказал riff,. одно имя разные значения соответственно проверяешь значения.
PHP:
if($_POST['radio']==1)
{ echo '2 текстовых поля'; }
elseif($_POST['radio']==2)
{ echo '3 поля соотвественно'; }
 

WMix

герр M:)ller
Партнер клуба
<input type="radio" required name="radio1" value="2">
$_POST['radio1']
 

Максимка

Новичок
вообщем не выходит:

Код:
<div class="row row-block">
    <div class="frame">
        <div class="radio-area">
            <input type="radio" name="radio" value="Radio Name" id="o1" checked><label for="o1">Radio Name:<em>*</em></label>
        </div>
        <div class="data">
            <div class="row">
                <label for="199">IBAN :<em>*</em></label>
                   
                                <input id="199" type="text" name="iban"  >
                            </div>
                            <div class="row">
                                <label for="198">BIC :<em>*</em></label>
                               
                                <input id="198" type="text" name="swiftcode"  >
                            </div>
                            <div class="row">
                                <label for="197">Name Bank:<em>*</em></label>
                               
                                <input id="197" type="text" name="nbank"  >
                            </div>
                            <div class="row">
                                <label for="196">Kontoinhaber:<em>*</em></label>
                               
                                <input id="196" type="text" name="nkontoinhaber"  >
                            </div>
        </div>
    </div>
   
    <div class="frame">
   
        <div class="radio-area">
            <input type="radio" name="radio" value="Radio Name 2" id="o2"><label for="o2">Radio Name 2<em>*</em></label>
        </div>
        <div class="data">
            <div class="row">
           
           
                                <label for="99">IBAN:<em>*</em></label>
                                <input id="99" type="text" name="kontonummer" >
                            </div>
                            <div class="row">
                                <label for="98">BIC (SWIFT-Code):<em>*</em></label>
                                <input id="98" type="text" name="bankleitzahl" >
                            </div>
                            <div class="row">
                                <label for="97">Name der Bank:<em>*</em></label>
                                <input id="97" type="text" name="derbank" >
                            </div>
                            <div class="row">
                                <label for="96">Kontoinhaber:<em>*</em></label>
                                <input id="96" type="text" name="kontoinhaber" >
                            </div>
                           
        </div>
       
    </div>
</div>
это мои радиобатоы с полями

это я пытаюсь передать их в функцию отправки:

Код:
    $news.= "Radio button name: " . "\r\n" . $_POST[radio] . "\r\n";
   
    $news.= "IBAN: " . "\r\n" . $_POST[iban] . "\r\n";
    $news.= "BIC (SWIFT-Code): " . "\r\n" . $_POST[swiftcode] . "\r\n";
    $news.= "Name der Bank: " . "\r\n" . $_POST[nderbank] . "\r\n";
    $news.= "Kontoinhaber: " . "\r\n" . $_POST[nkontoinhaber] . "\r\n";
       
    $radio = $_POST[radio];
    if($radio=='2'){
    $news.= "Kontonummer: " . "\r\n" . $_POST[kontonummer] . "\r\n";
    $news.= "Bankleitzahl: " . "\r\n" . $_POST[bankleitzahl] . "\r\n";
    $news.= "Name der Bank: " . "\r\n" . $_POST[derbank] . "\r\n";
    $news.= "Kontoinhaber: " . "\r\n" . $_POST[kontoinhaber] . "\r\n"; 
    }
в результате получаю в первом случае - данные приходят, во втором случае приходят первые 3 поля пустые а вторые 4 поля, вообще не приходят - что не так?
 

riff

Новичок
Сделай человеческую форму:
Код:
<form method="post">
...
<input type="submit">
</form>
нажми отправить. Всё приходит:
Код:
array(9) {
["radio"]=> string(10) "Radio Name"
["iban"]=> string(1) "1"
["swiftcode"]=> string(1) "2"
["nbank"]=> string(1) "3"
["nkontoinhaber"]=> string(1) "4"
["kontonummer"]=> string(1) "5"
["bankleitzahl"]=> string(1) "6"
["derbank"]=> string(1) "7"
["kontoinhaber"]=> string(1) "8"
}
А потом начинай искать ошибку в том javascript'е, который используешь для отправки данных.
 

Максимка

Новичок
ну причем тут JS, я имею отдельный файл, в который запихнул кучу полей которые приходят на мыло, форма у меня нормальная, данные приходят, не срабатывает только условие, и я не могу добиться нужного результат
 

riff

Новичок
Я всунул твой html в php скрипт без изменений (если не считать <form>), заполнил поля, нажал отправить.
Хм, странно, но мне пришли все данные. Вопрос: что я делаю не так?
 
Последнее редактирование:

Максимка

Новичок
riff так и я так же делаю

при выборе первого радио батона и полей, вот это срабатывает


Код:
$news.= "Radio button name: " . "\r\n" . $_POST[radio] . "\r\n";
 
    $news.= "IBAN: " . "\r\n" . $_POST[iban] . "\r\n";
    $news.= "BIC (SWIFT-Code): " . "\r\n" . $_POST[swiftcode] . "\r\n";
    $news.= "Name der Bank: " . "\r\n" . $_POST[nderbank] . "\r\n";
    $news.= "Kontoinhaber: " . "\r\n" . $_POST[nkontoinhaber] . "\r\n";
при выборе второго радио батона, должны эти поля приходить:

Код:
$radio = $_POST[radio];
    if($radio=='2'){
    $news.= "Kontonummer: " . "\r\n" . $_POST[kontonummer] . "\r\n";
    $news.= "Bankleitzahl: " . "\r\n" . $_POST[bankleitzahl] . "\r\n";
    $news.= "Name der Bank: " . "\r\n" . $_POST[derbank] . "\r\n";
    $news.= "Kontoinhaber: " . "\r\n" . $_POST[kontoinhaber] . "\r\n";
    }
но они не приходят, т.е. фигня какая-то
 
Сверху