2011-05-10 56 views
0

我想在网页(用php编写)上表示“是”和“否”的两个单选按钮。当我加载页面时,我希望它从MySQL数据库获取一个值并设置相应的单选按钮。当我点击另一个按钮时,我希望它更新数据库并重新加载页面。以HTML格式设置单选按钮的mysql值

我想用一个简单的html表单来做到这一点,但没有运气。我至今(即不工作的代码:(是:

if (!isset($_POST['submit'])) { 
    $sql = "SELECT challenge_me FROM contestants WHERE id=$id"; 
    $res = (mysql_fetch_assoc(mysql_query($sql, $db))); 
    $challenge_me = $res["challenge_me"]; 

}else{ 
    $sql = "UPDATE contestants SET challenge_me='" . $_POST['YesNo'] . "' WHERE id='$id'"; 
    if(!mysql_query($sql, $db)) 
     echo mysql_error(), "<br/>Query '$sql'"; 
    $challenge_me = $_POST['YesNo']; 
} 

    echo'<form method="post" action="' . $PHP_SELF . '">'; 
    echo '<input type="hidden" name="submit" value="submit">';   
if($challenge_me == 1){ 
    echo'<input type="radio" name="YesNo" value="1" onClick="this.form.submit();" checked>Yes '; 
    echo'<input type="radio" name="YesNo" value="0" onClick="this.form.submit();">No '; 
}else{ 
    echo'<input type="radio" name="YesNo" value="1" onClick="this.form.submit();">Yes '; 
    echo'<input type="radio" name="YesNo" value="0" onClick="this.form.submit();" checked>No '; 
} 
echo'</form>'; 

+1

不是您的问题的答案,但您不应该使用字符串连接来构建SQL查询。您的脚本当前容易受到SQL注入攻击,基于使用'$ _POST ['YesNo']'没有至少逃脱它或使用MySQL语句 – Rob 2011-05-10 22:09:13

+0

它怎么不工作?发生了什么? – thefugal 2011-05-10 22:12:40

+0

嗯,似乎我解决了它。它不工作,如果隐藏的帖子被命名为“提交“当我点击rad时,阻止了表单做任何事情io按钮。将其重命名为其他方式运行良好... 并感谢关于sql注入的评论! – faximan 2011-05-11 05:41:26

回答

1

你的脚本似乎没有明确的$ id,哪里的$ id从得到它的价值这可能是你的问题的根源?您的脚本可能不会在$ id中传递任何值

+0

也是,我假设$ PHP_SELF是空白的。我认为你正在尝试使用$ _SERVER ['PHP_SELF']。这可能不会影响代码,因为将操作留空会自动将表单提交给自己。 – dqhendricks 2011-05-10 22:54:44

+0

嗯,$ id作为函数的参数(我删除了几行代码,我认为这对我的问题并不有趣)。 – faximan 2011-05-11 05:19:01

+0

@faximan你解决了这个问题了吗?你有没有试过@dqhendricks建议,那是另一个可能的原因 – boug 2011-05-11 12:30:34