我有一个声明如下的复选框表:
for ($x = 0; $x < 6; $x++) {
echo "<tr>";
echo "<td>"; echo $days[$x]; echo '</td>'; //displays days
echo '<td><input type="checkbox" name="check_list[]" onClick="toggle(this, '.$x.')" value="1"/> All';
echo '<input type="hidden" name="check_list[]" onClick="toggle(this, '.$x.')" value="0"/></td>'; //creates check all buttons
for ($y = 0; $y < 12; $y++){
echo '<td><input type="checkbox" name="'.$x.'" value="1"> Bar 1<br/></td>'; //creates the other buttons
}
echo "</tr>";
}
名称=“ check_list []”复选框选中后,将选中同一行中的所有复选框。通过以下脚本完成:
<script language="JavaScript">
function toggle(source, id) {
checkboxes = document.getElementsByName(id);
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.checked;
}
}
</script>
然后将数据像这样存储在数据库中:
<?php
$i=0; $store[20]; $check[20];
foreach($_POST['check_list'] as $value){
$store[$i] = $value; $i= $i + 1;
}
$check = str_split(preg_replace('/10/','1',implode('',$store)));
array_walk($check, 'intval');
if($check[0]) { $monday = 1; } if(!$check[0]) {$monday = 2; }
if($check[1]) { $tuesday = 1; } if(!$check[1]) {$tuesday = 2; }
if($check[2]) { $wednesday = 1; } if(!$check[2]) {$wednesday = 2; }
if($check[3]) { $thursday = 1; } if(!$check[3]) {$thursday = 2; }
if($check[4]) { $friday = 1; } if(!$check[4]) {$friday = 2; }
if($check[5]) { $saturday = 1; } if(!$check[5]) {$saturday = 2; }
?>
显然,这不是全部代码(我编写了sql查询来连接和插入变量,并且有效。)但是到现在为止,我只为每一行取第一个复选框的值。这意味着,如果我选中它,则选中该行的所有复选框。但是我只读这样一个事实,即该行的所有复选框均已选中。如果我仅连续检查一个普通复选框,则不会发布其值,并且我存储的唯一信息是,并非所有复选框都已选中(由值2表示)。
我想做的是取每一行的普通复选框的值,然后将它们串联成一个数字。例如,对于星期一复选框(选中,未选中,未选中,选中),我将存储$ monday =1221。必须对所有天(星期一至星期六)执行相同的操作。
感谢提出的建议,但实际上我尝试了一种替代解决方案。我不是通过名称或ID来引用元素,而是通过类和名称来引用它们。我使用类(变量)来执行切换功能,并使用名称(一维数组)来获取其值。
简而言之,这是代码的基本概念:复选框声明
echo '<td><input type="checkbox" class="'.$x.'" name="check_list[]" value="1"> <br/>';
切换功能:
function toggle(source, id) {
checkboxes = document.getElementsByClassName(id);
for(var i=0, n=checkboxes.length;i<n;i++) {checkboxes[i].checked = source.checked;}
}
php代码获取值:
$i=0; $unclean[180];
foreach($_POST['check_list'] as $value){
$unclean[$i] = $value; $i= $i + 1;
}
然后,知道矩阵的维数后,我将这个一维数组简单地分成一个一维数组(基本上是一个矩阵),并使用for循环遍历该数组。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句