PHP-如何在单击单选按钮时将数据更新到MySQL

PHP-如何在单击单选按钮时将数据更新到MySQL,php,mysql,radio-button,Php,Mysql,Radio Button,拯救性别的榜样 <form action="save.php?id=<?=$id?>" method="post"> <p><label><input name="gender" type="radio" value="male" <?php if($gender=='male'){?>checked="checked"<? }?> /> Male</label></p>

拯救性别的榜样

<form action="save.php?id=<?=$id?>" method="post">
    <p><label><input name="gender" type="radio" value="male" <?php if($gender=='male'){?>checked="checked"<? }?> /> Male</label></p>
    <p><label><input name="gender" type="radio" value="female" <?php if($gender=='female'){?>checked="checked"<? }?> /> Female</label></p>
</form>

当我们点击性别时,如何使该值自动保存到数据库中。让我知道。

单靠PHP无法做到这一点。。。您需要在该页面上使用一些JavaScript,它执行radiobutton的
onchanged
,并执行一个PHP脚本。这被称为异步JavaScript和XML或“AJAX”,简单介绍一下可以让您走上一条更漂亮的道路:

  // $_POST is way cooler than $_REQUEST
  if (isset($_POST['gender']) && !empty($_POST['gender'])) {

      // sql injection sucks
      $gender = my_real_escape_string($_POST['gender']);

      // cast it as an integer, sql inject impossible
      $id = intval($_GET['id']);

      if($id) {
          // spit out the boolean INSERT result for use by client side JS
          if(mysql_query("UPDATE users SET gender=$gender WHERE id=$id")) {
              echo '1';
              exit;
          } else {
              echo '0';
              exit;
          }
      }
  }
假设使用相同的标记,ajaxy解决方案(使用):


变量id=;
//当DOM就绪时
$(文档).ready(函数(){
//“点击”,因为IE喜欢被“改变”扼杀
$('input[name=gender]')。单击(函数(e){
//防止正常、枯燥、乏味的表单提交
e、 预防默认值();
//使用XHR将其发送到带外服务器
$.post('save.php?id='+id,function(){
数据:$(this).val(),
成功:功能(resp){
如果(resp='1'){
警报(“保存成功”);
}否则{
警惕(“哎呀,出了点问题!”);
}
}
});
});
});

+1至karim79,用于指出jQuery/AJAX和$\u POST thingy。非常重要

下面是一个没有jQuery的解决方案(如果您现在对学习jQuery不感兴趣)

第1步:在复选框标签上添加一个onchange,如下所示:

<p><label><input name="gender" type="radio" value="male" onchange="do_submit()" <?php if($_POST['gender']=='male'){?>checked="checked"<? }?> /> Male</label></p>
<p><label><input name="gender" type="radio" value="female" onchange="do_submit()" <?php if($_POST['gender']=='female'){?>checked="checked"<? }?> /> Female</label></p>
<form name="myform" action="check.php" method="post">
男性

/>女性

步骤3:添加一个name属性以形成如下标签:

<p><label><input name="gender" type="radio" value="male" onchange="do_submit()" <?php if($_POST['gender']=='male'){?>checked="checked"<? }?> /> Male</label></p>
<p><label><input name="gender" type="radio" value="female" onchange="do_submit()" <?php if($_POST['gender']=='female'){?>checked="checked"<? }?> /> Female</label></p>
<form name="myform" action="check.php" method="post">

步骤3:用javascript编写onchange事件处理程序函数:

<script type="text/javascript">
function do_submit() {
  document.forms['myform'].submit();
}
</script>

函数do_submit(){
document.forms['myform'].submit();
}
有几件重要的事情需要注意

  • $\u POST是比$\u请求更好的选择

  • 在输入屏幕thingy.karim79中使用带有101010的cody按钮。我这样做了,它正确地调整了编辑器中的代码,但在提交后不起作用:(啊,编号的点把它搞砸了。我还没有弄清楚;)@bob-这只是为了提供额外的见解,希望能激发一些好奇心。请注意,缺少适当的异常处理,还有很多改进空间(总是!)。是的总是:)附加问题。intval()比(int)好?@bob-据我所知,没有区别,它们在失败时都返回零。看见