这是我在网站上的代码,它检索每个赛季,然后获得主场胜利数,胜率和赢得lsp,这很好,并且每个赛季在表格中创建一个新线。
然后我有两列过滤掉数据(Min& Max),它们是单选按钮,这些工作正常,我提交后保持检查并且值正常工作。
我遇到问题的是' Checkbox'在提交表单后我需要继续检查,它只会在我提交后检查其中一个复选框。
<form action='' method='post'>
<?php
echo "<table id='stats' width='100%' border='1' cellspacing='1' cellpadding='1'>
while($row = mysql_fetch_array($resultsseason, MYSQL_ASSOC)) {
echo "<tr bgcolor='#FFFFCC'>";
echo "<td align='center'><input type='radio' class ='radio-button' name='seasonmin' value='".$row['season']."'" . ((@$_POST['seasonmin'] == $row['season'])?'checked="checked"':"") . "/></td>";
echo "<td align='center'><input type='radio' class ='radio-button' name='seasonmax' value='".$row['season']."'" . ((@$_POST['seasonmax'] == $row['season'])?'checked="checked"':"") . "/></td>";
**echo "<td align='center'><input type='checkbox' name='seasonexc' value='".$row['season']."'/></td>";**
echo "<td align='center'>" . $row['season'] . "</td>";
echo "<td align='center'>" . $row['countp'] . "</td>";
echo "<td align='center'>$profitwb1<font color='$profitw'>" . $row['counth'] . "</font>$profitwb2</td>";
echo "<td align='center'>$profitwb1<font color='$profitw'>" . $row['WinPer'] . "%</font>$profitwb2</td>";
echo "<td align='center'>$profitwb1<font color='$profitw'>" . $row['WinLSP'] . "</font>$profitwb2</td>";
echo "</tr>";
}
echo "</table>";
?>
<hr><br>
<input type="submit" value="Update" >
<script type="text/javascript">
var allRadios = document.getElementsByName('seasonmin');
var booRadio;
var x = 0;
for(x = 0; x < allRadios.length; x++){
allRadios[x].onclick = function() {
if(booRadio == this){
this.checked = false;
booRadio = null;
}else{
booRadio = this;
}
};
}
</script>
<script type="text/javascript">
var allRadios = document.getElementsByName('seasonmax');
var booRadio;
var x = 0;
for(x = 0; x < allRadios.length; x++){
allRadios[x].onclick = function() {
if(booRadio == this){
this.checked = false;
booRadio = null;
}else{
booRadio = this;
}
};
}
</script>
我搜索并阅读了大量关于保持检查的帖子,但我似乎无法弄明白!我需要帮助的路线是..
echo "<td align='center'><input type='checkbox' name='seasonexc' value='".$row['season']."'/></td>";
以及如何保持所有已检查的,在我点击提交后检查!
提前谢谢你!
答案 0 :(得分:0)
复选框与单选按钮的不同之处在于它们未被分组。而使用单选按钮,您只能选中其中一个共享name
属性的复选框,而复选框必须使用不同的名称。
在您的情况下,您打印了一堆具有相同name
的复选框,这导致其中只有一个被提交。一个好的约定是使用数组类型name
,在您的情况下将是seasonexc[]
。如果您要跟踪索引,请将其更改为seasonexc[".$index."]
。
此外,我注意到,在您的问题行中,checked
属性完全丢失,因此无法检查其中任何一个。
答案 1 :(得分:0)
我发现这很简单......
if (isset($_POST['seasonexc']) && is_array($_POST['seasonexc']) && in_array($row['season'], $_POST['seasonexc'])) { $checked = "checked='checked'"; } else { $checked = ""; }
然后调用$ checked解决了这个问题!总是尝试过度思考它!