[英]php jquery save checkbox dynamically
我有點困惑如何在1個表中動態保存復選框值!
數據庫:
id PERSON check
--------------------
1 Person1 1
2 Person2 1
3 Person3 1
4 Person4 0
HTML代碼:
<form id="availability">
Person1 <input type="checkbox" id="person1" value="1" checked>
Person2 <input type="checkbox" id="person2" value="1" checked>
Person3 <input type="checkbox" id="person3" value="1" checked>
Person4 <input type="checkbox" id="person4" value="0">
</form>
jQuery的:
$('#availability').submit(function(){
$.post('include/setting.php', {
person1: $('#person1').val(),
person2: $('#person2').val(),
person3: $('#person3').val(),
person4: $('#person4').val(),
}, function(data){
if(data.success) {
} else {
}
}, 'json');
return false;
})
PHP:
$person1 = $_POST['person1'];
$person2 = $_POST['person2'];
$person3 = $_POST['person3'];
$person3 = $_POST['person4'];
$db->query("UPDATE person SET id='???");
您不需要一次處理所有輸入的表單,而只發送對已修改字段的請求,而無需使用任何表單。
$('input:checkbox').change(function() {
$.post('include/setting.php', {
id: this.id,
value: $(this).attr("checked")?1:0
}, function(data){
if(data.success) {
} else {
}
}, 'json');
return false;
});
對於PHP:
$db->query("UPDATE person SET value=".$_POST['value']." WHERE id=".$_POST['id'] );
還要記住,始終使用mysql_real_escape_string()來轉義查詢
您的方法不是最簡潔或最模塊化的方法,但是可以起作用。 這是對代碼的直接修改,應該可以幫助您:
的HTML
<form id="availability">
Person1 <input type="checkbox" id="person1" value="1">
Person2 <input type="checkbox" id="person2" value="1">
Person3 <input type="checkbox" id="person3" value="1">
Person4 <input type="checkbox" id="person4" value="1">
</form>
javascript
$( '#availability' ).submit( function()
{
$.post(
'include/setting.php',
{
persons: {
person1: ( $( '#person1:checked' ).length ? 1 : 0 ),
person2: ( $( '#person2:checked' ).length ? 1 : 0 ),
person3: ( $( '#person3:checked' ).length ? 1 : 0 ),
person4: ( $( '#person4:checked' ).length ? 1 : 0 )
}
},
function( data )
{
if( data.success )
{
}
else
{
}
},
'json'
);
return false;
} );
的PHP
<?php
foreach( $_POST['persons'] as $personIdentifier => $checked )
{
//DO PROPER CHECKS AND ESCAPING OF INCOMING DATA!!!!!!!
$db->query( "UPDATE person SET check = {$checked} WHERE PERSON = '{$personIdentifier}'" );
}
要傳遞0(如果未選中)和1(如果選中),則可以將is方法與:checked選擇器一起使用,以將檢查后的值確定為布爾值,然后根據結果使用三元運算符將JSON值設置為1或0。
$('#availability').submit(function(){
$.post('include/setting.php', {
"person1" : $('#person1').is(':checked') ? 1 : 0,
"person2" : $('#person2').is(':checked') ? 1 : 0,
"person3" : $('#person3').is(':checked') ? 1 : 0,
"person4" : $('#person4').is(':checked') ? 1 : 0,
}, function(data){
if(data.success) {
} else {
}
}, 'json');
return false;
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.