多数のチェックボックスを含むフォームを送信するための最良の方法は何ですか。
no_of_checkboxesはかなり大きい(200以上)。
チェックボックスのステータスを最も効率的な方法でデータベーステーブルにマップする必要があります。
質問する
716 次
1 に答える
2
フォームの投稿は非常に遅いようです。
なぜ遅いのかわかりませんが、ここで試してみてください。すべてのチェックボックスフィールドをフォーム要素の外側に配置して、送信されないようにします。「ボックス」という名前の非表示の要素をフォームに配置します。JavaScriptを使用して、送信時にjsonがチェックボックスをエンコードし、文字列を非表示フィールド「ボックス」に配置する関数を起動します。アクションページで、jsonをデコードするか、json文字列を単一のDBフィールドに保存します。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
var boxes = {};
$(document).ready(function(){
$('form').submit(function(){
$('input[type=checkbox]').each(function(){
if($(this).prop('checked')){
boxes[$(this).prop('name')] = '1';
//boxes[$(this).prop('name')] = $(this).val(); // if you want the value
}else{
boxes[$(this).prop('name')] = '0';
}
});
$('#boxes').val(JSON.stringify(boxes));
return true;
});
});
</script>
チェックボックスのステータスを最も効率的な方法でデータベーステーブルにマップする必要があります。
<?php
$boxes = json_decode($_POST['boxes'], true);
$columns = array();
$values = array();
foreach($boxes as $key=>$val){
$columns[] = $key;
$values[] = "'$val'";
}
$columns = "(".implode(', ', $columns).")";
$values = "(".implode(', ', $values).")";
// example query: mysql_query("INSERT INTO table $columns VALUES $values");
?>
于 2013-02-05T19:45:41.713 に答える