提交包含大量复选框的表单的最佳方式是什么。
no_of_checkboxes 相当大(超过 200 个)。
我需要以最有效的方式将复选框的状态映射到数据库表。
问问题
716 次
1 回答
2
发布表格似乎很慢。
我不确定为什么它很慢,但这里有一些东西可以尝试。将所有复选框字段放在表单元素之外,这样它们就不会被提交。在表单中放置一个名为“boxes”的隐藏元素。使用 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 回答