Не могу получить значение радиокнопки для публикации в PHP - PullRequest
0 голосов
/ 30 марта 2012

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

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.";
}
}

Ответы [ 3 ]

4 голосов
/ 30 марта 2012
$p = (isset($_POST['PayPlatform']) && $_POST['PayPlatform'] == 'Yes');

Логическое значение true, если установлен флажок yes, и false в противном случае.

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

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

Строки считаются установленными, и, как сказал PsyCoder, вы получите значения value , а не Booleans.

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

1 голос
/ 30 марта 2012

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

0 голосов
/ 30 марта 2012
if($_POST["PayPlatform"] == "Yes") {
    $PayPlatform = true;
}

Проще говоря:)

...