PHP:通过 $_POST 提交表单数据适用于所有字段,但单选按钮除外


PHP: Submitting form data via $_POST works for all fields except radio buttons

我是PHP的新手,希望有人可以帮助我。

我有一个带有许多输入和文本区域的 HTML 表单。在提交时,我将表单传递到另一个 PHP 页面,该页面会生成一封包含其值的电子邮件。

对于文本

输入和文本区域,一切都按预期工作,但对于单选按钮,我无法让它向我显示目标页面上的值。

单选按钮如下所示,那里使用的类仅用于应用一些 CSS。提交页面上只有一个表单,所有无线电都具有相同的名称(" requestType "),并且没有其他元素使用此名称。
此外,我添加了一个快速的 JavaScript 代码片段用于测试,以在更改时提醒它们的值,这也有效,因此问题似乎仅与$_POST有关。

有人可以告诉我我在这里做错了什么,或者我可以在这里尝试什么替代方案吗?

我的 HTML(在提交页面上):

<input type="radio" class="customRadio radioDefault" id="requestType1" name="requestType" value="Value1" />
    <label for="requestType1">Value1</label>
<input type="radio" class="customRadio triggerDiv" id="requestType2" name="requestType" value="Value2" />
    <label for="requestType2">Value2</label>

我的PHP(在目标页面上):

$_POST["requestType"]

更新:
根据 RiggsFolly 的说法,我试图检查它是否识别出选中了一个单选按钮,它似乎确实如此,它只是不返回任何内容,因为以下内容只返回"xx":

if(isset($_POST['requestType'])){
    $theSelectedOne = $_POST['requestType'];
    echo "radio value: x" . $theSelectedOne . "x";
}else{
    echo "boohoo";
}

单选按钮(和复选框)只有在实际选中 $_POST 或 $_GET 数组中传递回表单。我注意到您在创建 HTML 时不会自动检查其中一个,因此如果用户不进行任何选择,则可能不会返回任何内容。

因此,测试它们是否被选中的最佳方法是测试它们的名称在 $_POST 数组中是否存在

if ( isset( $_POST['requestType'] ) ) {
    // a selection was made
    // so now test the value to see which one was checked
    $theSelectedOne = $_POST['requestType'];
}