PHP - 单击单选按钮时如何将数据更新到 MySQL
-
06-07-2019 - |
题
保存性别的示例
<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());
}
如何使当我们单击性别时该值将自动保存到数据库中。让我知道。
解决方案
让你走上更漂亮的道路的东西:
// $_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>
其他提示
单独使用PHP无法做到这一点...您需要在该页面上执行一些JavaScript来执行radiobutton的onchanged
并执行PHP脚本。这称为异步JavaScript和XML或<!>“AJAX <!>”,快速介绍将是 http://www.w3schools.com/ajax/default.asp
+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: 用 javascript 编写 onchange 事件处理函数:
<script type="text/javascript">
function do_submit() {
document.forms['myform'].submit();
}
</script>
有几点需要注意。
- $_POST 是比 $_REQUEST 更好的选项。
- 使用
<?php
而不是 php 标签的缩写形式<?
. 。它将在 php 的未来版本中被弃用。 - 投入时间学习 jQuery/AJAX 是 100% 值得的时间和精力
不隶属于 StackOverflow