我设置了一个相当基本的表单,其中包含一个单选按钮的输入字段。
有一个php脚本处理表单并将值插入到mysql数据库中。出于某种原因,每次填写表格时,无论是否选择了收音机,结果始终为ON / TRUE。
这是我的输入字段:
<input type="radio" name="news" id="news" class="radio" value="yes" />
以下是应该处理的PHP代码的一部分:
if(isset($_POST['news']))
{
$news = "Yes";
}
else
{
$news = "No";
}
有人可以告诉我该代码的问题是什么,还是我需要发布更多?
这是完整的表单代码:
<form method="POST" id="ipad" name="ipad" action="list.php">
<input type="text" onfocus="if (this.value == 'First Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'First Name';}" value="First Name" id="fname" name="fname" class="inputtext">
<input type="text" onfocus="if (this.value == 'Last Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Last Name';}" value="Last Name" id="lname" name="lname" class="inputtext">
<input type="text" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" name="email" class="inputtext">
<input type="text" onfocus="if (this.value == 'Code') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Code';}" value="Code" id="code" name="code" class="inputtext">
<input type="radio" value="" class="radio" id="news" name="news">
<div class="radiotext">sign up?</div>
</form>
请注意,单选按钮输入没有应用javascript。我已尝试使用YES或NO填写值=“”或将其留空。
答案 0 :(得分:1)
您需要测试单选按钮的值。变量将始终存在,因此isset()
必然始终返回true。
if(!empty($_POST['news']) and ($_POST['news'] == 'yes'))
答案 1 :(得分:1)
if (isset($_POST['news']) && $_POST['news'] == 'yes'){
$news = "Yes";
}
else
{
$news = "No";
}
答案 2 :(得分:0)
关于那个jquery代码,javascript不需要在html里面工作。如果我是你,我会搜索我的代码.attr(“checked”,“checked”)或.prop(“checked”);
答案 3 :(得分:0)
您需要像这样解决它...
您需要向表单中添加hidden
输入,并且无论何时单击radio
按钮之一,您都会调用一个函数,该函数将更改hidden
输入的值通过其id
..逐步进行:
向表单添加隐藏的输入,并为其提供名称和ID:
<input type="hidden" id="IsFormer" name="IsFormerValue" value="">
为两个单选按钮添加点击属性:
<input type="radio" id="Former" name="IsFormer" onclick="ToggleIsFormer('Yes')">
<input type="radio" id="NotFormer" name="IsFormer" onclick="ToggleIsFormer('No')">
在Javascript中添加功能:
function ToggleIsFormer (Value) {
document.getElementById('IsFormer').value = Value;
}
最后,在PHP
中,使用隐藏输入的名称而不是单选按钮的名称来检查值。
以下是您的代码的上述步骤(首先尝试自行完成;)):
<form method="POST" id="ipad" name="ipad" action="list.php">
<input type="text" onfocus="if (this.value == 'First Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'First Name';}" value="First Name" id="fname" name="fname" class="inputtext">
<input type="text" onfocus="if (this.value == 'Last Name') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Last Name';}" value="Last Name" id="lname" name="lname" class="inputtext">
<input type="text" onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" name="email" class="inputtext">
<input type="text" onfocus="if (this.value == 'Code') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Code';}" value="Code" id="code" name="code" class="inputtext">
<input type="radio" class="radio" id="news" name="news" onclick="ToggleWithNews()">
<div class="radiotext">Sign up?</div>
<input type="hidden" id="WithNews" name="WithNewsValue" value="No">
</form>
<script>
function ToggleWithNews () {
document.getElementById('WithNews').value = 'Yes';
}
</script>
完成!
我的注释::如果只有[on]选项,并且查看者可以打开或关闭该选项,则
Yes
应该使用2个单选按钮,而{{1} },因为一个单选按钮一旦被选中将无法取消选中。或
如果您只想为该选项添加输入,则应使用
No
输入,因为可以随时选中和取消选中该输入。
希望我的回答对您有所帮助:)