2009-10-26 99 views
2

实例保存性别PHP - 如何将数据更新到MySQL时,单击一个单选按钮

<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> 

下面一个例子来更新值

if ($_REQUEST['gender']) { 
    mysql_query("UPDATE users SET gender='$gender' WHERE id='" . $id . "'") or die(mysql_error()); 
    } 

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

回答

7

东西来设置你关闭一个漂亮路径:

// $_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溶液(使用jQuery):

<script> 
var id = <?=$id?>; 

// when the DOM is ready 
$(document).ready(function() { 

    // 'click' because IE likes to choke on 'change' 
    $('input[name=gender]').click(function(e) { 

     // prevent normal, boring, tedious form submission 
     e.preventDefault(); 

     // send it to the server out-of-band with XHR 
     $.post('save.php?id=' + id, function() { 
      data: $(this).val(), 
      success: function(resp) { 
       if(resp == '1') { 
        alert('Saved successfully'); 
       } else { 
        alert('Oops, something went wrong!'); 
       } 
      } 
     }); 
    }); 
}); 
</script> 
+0

现在更加清晰的感谢! – wow 2009-10-26 19:42:32

+1

@bob - 这只是为了提供额外的洞察力,并希望引发一些好奇心。请注意,适当的异常处理丢失了,并且有很大的改进空间(总是!) – karim79 2009-10-26 19:49:05

+0

是的,总是:)附加问题intval )好于(int)? – wow 2009-10-26 19:58:54

3

你不能单独使用PHP来做到这一点......你需要在该页面上执行一些JavaScript代码,并执行一个单选按钮并执行一个PHP脚本。这就是所谓的异步JavaScript和XML或“AJAX”,并简要介绍将http://www.w3schools.com/ajax/default.asp

+0

的onchange =“this.form.submit();对于这个工作谢谢:) – wow 2009-10-26 19:16:18

1

+1到karim79您指出的jQuery/AJAX和$ _ POST啄。很重要。

这里是没有的jQuery的解决方案(如果你不感兴趣,学习jQuery的现在)

第1步:

<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> 
甚至在你的复选框标签这样添加 平变化

第3步:添加名称属性以形成如下标签:

<form name="myform" action="check.php" method="post"> 

第3步:写onchange事件处理函数在javascript:

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

几个重要的事情需要注意。

  • $ _POST是比$ _REQUEST更好的选项。
  • 使用<?php代替php标签<?的缩写形式。它将在未来的PHP版本中被弃用。
  • 投资时间在学习的jQuery/AJAX是100%值得我加入的时间和精力
+0

任何人都可以告诉我获得正确的HTML代码片段在这里工作? – 2009-10-26 19:36:25

+0

在输入屏幕上使用101010的cody按钮。 – karim79 2009-10-26 19:46:30

+0

karim79。我做了,它正确地调整了编辑器中的代码,但在提交后不工作:( – 2009-10-26 19:49:08

相关问题