我的复选框是使用while循环创建的,因此我无法在其中的每个人上添加id或名称,因此我无法更改记录。如果值为1则勾选复选框,如果我的表中值为0则不勾选,这对检查有好处,但我不能用它们来更改对应于复选框的记录值? 这是我的代码:
<?php
if($records === FALSE) {
die(mysql_error());
}
while($student=mysql_fetch_assoc($records)){
echo "<tr>";
echo "<td>".$student['SID']."</td>";
echo "<td>".$student['Student_Name']."</td>";
if($student['Month_1'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_2'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_3'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_4'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_5'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_6'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_7'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_8'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_9'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_10'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_11'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
if($student['Month_12'] == 1){
echo "<td>"."<input type='checkbox' checked='true'>"."</td>";
}else{
echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
}
echo "</tr>";
}
?>
答案 0 :(得分:0)
首先,不需要写这个echo "<td>"."<input type='checkbox' checked='false'>"."</td>";
,只需像这样写echo "<td><input type='checkbox' checked='false'></td>";
(不需要在那里连接)
其次,请看这个链接:http://php.net/manual/en/function.mysql-fetch-assoc.php
此扩展在PHP 5.5.0中已弃用,并已在PHP 7.0.0中删除。
第三,按顺序“更改对应于复选框的记录值” 你基本上需要将数据发送到服务器上的某个脚本(form - &gt; changeDbEntry.php),并且该脚本应该连接到DB并完成你想要的工作。
我知道这不是你期望的答案,但是没有理解正在发生的事情的解决方案就是无用的。所以......
建议1:阅读有关html表单,POST / GET请求和AJAX(稍后阅读有关标题,WebSockets,协议......)
建议2:检查出来:http://www.php-fig.org/psr/psr-1/
答案 1 :(得分:0)
我认为你应该为每个包含月份标志和学生ID的复选框添加一个名称,如:
echo "<td>"."<input type='checkbox' checked='true' name='Month_1[".$student['SID']."]'>"."</td>";
然后在提交表单后,您可以使用匹配$ student ['SID']的键更改数组中的数据库值:
while($student=mysql_fetch_assoc($records)){
$Month_1 = (!empty($_POST['Month_1'][$student['SID']])) ? 1 : 0; // returns 1 if checkbox was ticked or 0 if it wasn't
// get the rest of months
// update mysql record with `SID` = $student['SID']]
}