2012-03-29 20 views
0

Я начал с кода от простого шаблона и был изменен в соответствии с моими потребностями. Это было потрясающе хорошо. Последний вопрос, который у меня есть, - это получить некоторые переключатели для публикации. Я пропущу блоки кода, которые, как я считаю, не нужны, и просто покажу, что я думаю. Я пробовал буквально десятки попыток решений от php.net, но ничего не работает.Не могу получить значение радио кнопки для отправки в php

HTML

<label for='PayPlatform'>Are you willing to pay for a trading platform?</label> 
<input type='radio' name='PayPlatform' value='Yes' tabindex='1001' />Yes 
<input type='radio' name='PayPlatform' value='No' tabindex='1002' />No 

Вот где я не могу получить значение, и моя попытка есть две попытки в следующей кодоблок, они, конечно, не попытки одновременно.

else if ($action == "send") { 
// other elements form values are retrieved fine, just not the below 
$PayPlatform = isset($_POST['PayPlatform']) ? ' checked="checked"' : ""; 
    //the ternary above just submits 'checked="checked" no matter which radio is checked 
    //another attempt 
    $PayPlatform = isset($_POST["PayPlatform"]); 
    //this just submits "1" weather yes or no is checked 
$token = isset($_POST["token"]) ? $_POST["token"] : ""; 

// make sure the token matches 
if ($token === smcf_token($to)) { 
    smcf_send($name, $email, $subject, $phone, $message, $PayPlatform); 
    echo "Your message was successfully sent, you can close this window"; 
} 
else { 
    echo "Unfortunately, your message could not be verified."; 
} 
} 
+4

var_dump ($ _ POST) является вашим другом – sdjuan

+0

@sdjuan - я сделал дамп $ _POST, она показывает "Да" для каждого значения, которое я проверяю да, но я не могу 't получить его, чтобы отправить да ... см. ниже –

+0

Можете ли вы разместить свой var_dump? Может быть, это поможет в этом. Эх, я не думаю, что Корбин прав. – Gohn67

ответ

4
$p = (isset($_POST['PayPlatform']) && $_POST['PayPlatform'] == 'Yes'); 

Boolean верно, если да радио checked и false в противном случае.

Предположим, у вас есть следующие:

$a = 'Yes'; 
isset($a); //true 
$b = 'No'; 
isset($b); //true 

Строки считаются множество, и, как сказал PsyCoder, вы будете получать суммы значения, а не булевыми.

Кроме того, на другой (chastise-y) заметке, этот вопрос можно было бы полностью избежать с немного лучшей отладки. Первое, что я бы сделал, - это var_dump ($ _ POST) и посмотреть, что это за значение. Вы бы тогда увидели, что $ _POST ['PayPlatform'] всегда был Да или Нет, и вы бы поняли, что isset всегда верен для строк.

+0

ОК, используя выше, я получаю «1», если они проверяют «да», «2», если они проверяют нет. для меня приемлемо. К сожалению, человек, который получает это, является идиотом и хочет видеть «Да» или «Нет», как бы вы это сделали? Я хочу получить фактическое значение ввода, который они выбирают –

+0

Тогда erm .. .. используйте $ _POST ['PayPlatform'] ??? (Хотя я бы проверял, чтобы убедиться, что он установлен и что это один из допустимых параметров.) – Corbin

+0

@DirtyBirdDesign, вы должны получить «Да» или «Нет». я не знаю, почему вы получаете 1 и особенно 2, учитывая приведенную выше информацию. – Gohn67

1

Вы не получите значение, как зарегистрированный или незарегистрированный ... а вы получите значение value='No' или value='No' параметр, указанный в вашем HTML ...

+0

Вы имеете в виду значение = «Да» или значение = «Нет» правильно? –

+0

да ... я имею в виду это ... –

0
if($_POST["PayPlatform"] == "Yes") { 
    $PayPlatform = true; 
} 

Держа это просто :)

+0

Держите его простым? Тогда почему в мире есть strip_tags? – Corbin

+0

Кодирование привычки, я никогда не буду доверять представленному пользователю контенту :) Может быть, не нужно в этом случае, но я всегда ставил его в примерах :) – ArendE

+1

Это на 100% бессмысленно. На самом деле, я бы счел это неправильным.

Да

не должен == 'Да', но в вашем примере это будет. Если кто-то искал мои формы, мне нравится это знать, а не игнорировать его :). HTML-экранирование (или удаление) имеет смысл только в контексте HTML. Когда вы сравниваете равенство, оно больше не является «html», если только пользователь не должен представлять HTML. htmlspecialentities'ing html, который печатается, имеет важное значение, но это похоже на то, что вы слишком сильно это сделали. – Corbin

Смежные вопросы