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だけではこれを行うことはできません...ラジオボタンのonchanged
を実行し、PHPスクリプトを実行するJavaScriptがそのページで必要になります。これは非同期JavaScriptおよびXMLまたは<!> quot; AJAX <!> quot;と呼ばれ、簡単な紹介は http://www.w3schools.com/ajax/default.asp
jQuery / AJAXと$ _POSTを指摘して、karim79に
+1。とても重要です。
これは、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">
ステップ3: onchangeイベントハンドラー関数をJavaScriptで記述します:
<script type="text/javascript">
function do_submit() {
document.forms['myform'].submit();
}
</script>
注意すべき重要な点のカップル。
- $ _ POSTは$ _REQUESTよりも優れたオプションです。
- 短い形式のphpタグ
<?php
の代わりに<?
を使用します。 phpの将来のバージョンでは非推奨になります。 - jQuery / AJAXの学習に時間をかけることは、時間と労力の価値が100%あります
所属していません StackOverflow