无法获取单选按钮值以在php中发布

时间:2012-03-29 20:07:59

标签: php post radio-button

我从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 个答案:

答案 0 :(得分:4)

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

Boolean如果选中yes收音机,则为true,否则为false。

假设您有以下内容:

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

字符串被视为已设置,正如PsyCoder所说,您将收到值,而不是布尔值。

另外,在另一个(惩罚性)注释中,通过一些更好的调试可以完全避免这个问题。我要做的第一件事就是var_dump($ _ POST)并查看值是什么。您已经看到$ _POST [&#39; PayPlatform&#39;]总是是或否,您可能已经意识到isset在字符串上始终为真。

答案 1 :(得分:1)

您无法获得已检查或未选中的价值...而是您将收到html中指定的value='No'value='No'参数值...

答案 2 :(得分:0)

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

保持简单:)