如何使用php创建的复选框更改数据库中的记录

时间:2016-04-01 16:57:34

标签: php sql checkbox

我的复选框是使用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>";
            }
        ?>

2 个答案:

答案 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']]
}