Вопросы HTML $_POST

В настоящее время у меня есть форма, а под формой у меня есть флажок и несколько переключателей. Вот код для флажка и переключателей:

<li id="discountCheckbox"       class="     ">
    <label class="desc" id="title416" for="Field416">
        Discounts Available:
            </label>
    <div>
        <span>
    <input id="discountCheckbox"        name="discountCheckbox"         type="checkbox"         class="field checkbox"      value="Past Host Discount - 10%"        tabindex="12"                       />
    <label class="choice" for="Field416">Past Host Discount - 10%</label>
    </span>
        </div>
    </li>


<li id="shipping1"      class="     ">
<label class="desc" id="shippingChoice" name="shippingLabel" value="yahha" for="Field517_0">
    Shipping Options
        </label>
<div>
<input id="9281" name="9821" type="hidden" value="" />
    <span>
<input id="shipping1"       name="shipping1"        type="radio"        class="field radio"         value="cost"        tabindex="13"                        checked="checked"      onclick="setShippingSpan('$2.00');"             />
<label class="choice" for="Field517_0"      >
    $2.00 Shipping Fee</label>
    </span>
    <span>
<input id="shipping2"       name="shipping1"        type="radio"        class="field radio"         value="free"        tabindex="14"           onclick="setShippingSpan('$0.00');"                 />
<label class="choice" for="Field517_1"      >
    I will pick up the items (free shipping)</label>
    </span>
    </div>
</li>

При отправке моей формы у меня есть файл process.php, который запускается. В этом файле я беру значение флажка, используя $_POST["discountCheckbox"]. Но я не могу понять, как получить значение переключателей (определяя, какой из них выбран). Как мне это сделать?


person CodeGuy    schedule 28.01.2011    source источник
comment
У вас есть несколько элементов с одинаковым идентификатором. Это недопустимый HTML.   -  person lonesomeday    schedule 28.01.2011
comment
Я исправил это. Что мне теперь делать?   -  person CodeGuy    schedule 28.01.2011
comment
Также полезно почистить HTML-код, чтобы мы могли помочь вам быстрее... это делает его немного трудным для чтения. Искренне :)   -  person JeroenEijkhof    schedule 28.01.2011
comment
Вы написали $_POST, значит, вы используете PHP? В этом посте это не упоминается, потому что решение по перехвату значения будет включать использование $_POST['shipping1'] для получения значения ваших переключателей. Например, посмотрите эту статью об этом (homeandlearn.co.uk/php/php4p10.html )   -  person JeroenEijkhof    schedule 28.01.2011


Ответы (4)


Дайте всем переключателям одинаковое имя, и тогда это имя в вашем $_POST будет иметь значение выбранного переключателя.

person Aaron Hathaway    schedule 28.01.2011
comment
Я дал им одно и то же имя, так как мне это сделать? (см. обновленный код) - person CodeGuy; 28.01.2011
comment
jsfiddle.net/6RATF надеюсь, что это немного поможет. Он использует jquery для получения значения, но оно должно быть примерно таким же на другом конце сообщения формы. - person Aaron Hathaway; 28.01.2011

Дайте переключателям одно и то же имя, но разные значения. Когда форма отправлена, найдите выбранное значение, просто проверив значение этого имени в массиве $_POST.

person Macy Abbey    schedule 28.01.2011
comment
См. код выше. Я обновил его, чтобы иметь те же имена. Как теперь будет выглядеть код? - person CodeGuy; 28.01.2011
comment
$_POST['shipping1'] теперь будет оценивать любой переключатель, выбранный пользователем перед отправкой формы. - person Macy Abbey; 28.01.2011

Я считаю, что ваши input элементы типа radio должны иметь общий атрибут name и различаться своими атрибутами value. Затем в своем PHP-коде вы должны проверить значение $_POST[], проиндексированное по имени, которое должно содержать значение выбранного переключателя.

person David    schedule 28.01.2011
comment
Я обновил код, чтобы элементы типа radio имели одинаковое общее имя. Можете ли вы показать мне, как это сделать с помощью $_POST? - person CodeGuy; 28.01.2011
comment
@reising1: $_POST["shipping1"] должен содержать стоимость значения, когда этот код публикуется, при условии, что переключатель остается отмеченным. В противном случае он должен содержать бесплатно (или что-либо еще, что вы добавляете к этому переключателю). - person David; 28.01.2011
comment
@ reising1: определить не работает. Какое значение находится в этом элементе массива? Какие элементы входят в массив $_POST? - person David; 28.01.2011
comment
В моем php-коде у меня есть: if($_POST[shipping1]==cost) {$response = $response. Доставка: $2.00‹br›; }, что не работает - person CodeGuy; 28.01.2011
comment
@ reising1: Не работает, по-прежнему неоднозначно. Какое значение содержится в $_POST["shipping1"] при выполнении этого кода? - person David; 28.01.2011

Присвоив всем переключателям одинаковое имя, вы получите значение выбранного в переменной $_POST[name].

<input name="shipping" value="something" type="radio" />

echo $_POST['shipping']; // echoes "something"
person goto-bus-stop    schedule 28.01.2011
comment
Я обновил код, чтобы сохранить согласованные имена. Можете ли вы показать мне, как код будет выглядеть сейчас? - person CodeGuy; 28.01.2011
comment
Все они имеют имя shipping1, поэтому используемая переменная $_POST['shipping1']. Это будет содержать значение выбранного переключателя, в данном случае платного или бесплатного. - person goto-bus-stop; 28.01.2011
comment
в моем php-коде есть if($_POST[shipping1]==cost) {$response = $response. Доставка: $2.00‹br›; $гранд += 2; }, но это не работает, даже если я отправляю с правильным переключателем - person CodeGuy; 28.01.2011
comment
на самом деле я распечатываю $response = $response . ЗНАЧЕНИЕ: . $_POST[доставка1] . ‹бр›; который печатает пробел после двоеточия - person CodeGuy; 28.01.2011