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

Posted

技术标签:

【中文标题】PHP - 单击单选按钮时如何将数据更新到 MySQL【英文标题】:PHP - How to update data to MySQL when click a radio button 【发布时间】:2010-12-10 05:58:51 【问题描述】:

保存性别的示例

<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());
  

当我们点击性别时如何使值自动保存到数据库中。告诉我。

【问题讨论】:

【参考方案1】:

让你走上更漂亮道路的东西:

  // $_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>

【讨论】:

@bob - 这只是为了提供额外的见解,并希望能激发一些好奇心。请注意,缺少正确的异常处理,并且有大量的改进空间(总是!)。 是的,总是:) 附加问题。 intval() 比 (int) 好吗? @bob - 据我所知,没有区别,它们都在失败时返回零。见php.net/manual/en/…【参考方案2】:

您不能仅使用 PHP 来执行此操作...您需要在该页面上执行一些 javascript,以执行单选按钮的 onchanged 并执行 PHP 脚本。这称为异步 JavaScript 和 XML 或“AJAX”,快速介绍是 http://www.w3schools.com/ajax/default.asp

【讨论】:

【参考方案3】:

+1 to karim79 指出 jQuery/AJAX 和 $_POST 东西。很重要。

这里是一个没有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>

第 3 步:name 属性添加到表单标签中,如下所示:

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

第三步:用javascript编写onchange事件处理函数:

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

</script>

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

$_POST 是比 $_REQUEST 更好的选择。 使用&lt;?php 代替php 标记&lt;? 的缩写形式。它将在未来的 php 版本中被弃用。 花时间学习 jQuery/AJAX 是 100% 值得的时间和精力

【讨论】:

在输入屏幕中使用 cody 按钮和 101010。 karim79。我做到了,它正确地调整了编辑器中的代码,但在提交后不起作用:( 啊,数字点搞砸了。我还没有弄清楚;)

以上是关于PHP - 单击单选按钮时如何将数据更新到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHP 中的单选按钮发送值属性 [关闭]

如何将数据从 listview 单选按钮保存到 SQLite?

iOS 中单选按钮的实现

使用ajax在单击时保存单选按钮的值

使用单选按钮更新数据库的简单 PHP 任务

使用Jquery和PHP单击保存按钮时如何将多个表行更新为mysql表?