使用单个按钮更新单独的记录

时间:2014-11-23 19:25:15

标签: php html mysql

我在这里有这个表的代码:

while($record=mysql_fetch_array($myData) )  {
    echo "<form action=mydata3.php method=post>";
    echo"<tr>";
    echo "<td>" . $record['Id'] . "</td>";
    echo "<td>" . $record['Name']  . "</td>";
    echo "<td>" . $record['Surname']  . "</td>";
    echo "<td align='center'>" . "<input type=checkbox name=attendance value=". $record['Attendance'] . " </td>";
    echo "</form>";
    echo"<tr>";
    }

我想点击考勤按钮来更新sql数据库的记录。 如果选中每个学生的复选框,则参加者的值应为“是”,如果未选中则应为“否”。我设法做了一些事情,但获得了第一个学生的复选框值,并将其提供给所有学生。 / p>

功能:

if (isset($_POST['updatesec'])) {

    $sql = " SELECT * FROM students";

    $con = mysql_connect("localhost", "root", "");
    if (!$con) {
        die("Cannot connect:  " . mysql_error());
    }

    $myData = mysql_query($sql, $con);
    while ($students = mysql_fetch_array($myData)) {
        $UpdateQuery = "UPDATE students SET Attendance=' " . check() . " ' WHERE  Id=$students[Id]";
        mysql_query($UpdateQuery, $con);
    }
}

Function check() {
    if (isset($_POST['attendance'])) {
        return 'yes';
    } else {
        return 'no';
    }
}

更新:我已更改代码如下

while($record=mysql_fetch_array($myData) )  {
echo "<form action=studentstable.php method=post>";
echo"<tr>";
echo "<td>" . $record['Id'] . "</td>";
echo "<td>" . $record['Name']  . "</td>";
echo "<td>" . $record['Surname']  . "</td>";
echo "<td align='center'>" . "<input type=checkbox name='attendance[".$record['Id']."]' value='". $record['Attendance'] . "' /> </td>";
echo "</form>";
echo"<tr>";
}


if (isset($_POST['updatesec']))  {

$myData = mysql_query( $sql,$con);
while ($students = mysql_fetch_array($myData)) {



   $UpdateQuery = "UPDATE students SET Attendance=  '" . check($students['Id']) . " ' WHERE  id=$students[Id]";
   mysql_query($UpdateQuery, $con);



}


}




Function check($id) {
        if (isset($_POST['attendance'][$id])) {
           return 'yes';
        } else {
           return 'no';
        }
     }

但仍然只适用于表格的第一个复选框

1 个答案:

答案 0 :(得分:0)

你需要更改你的checbox的名称和你的检查功能:

    function check($id) {
        if (isset($_POST['attendance'][$id])) {
           return 'yes';
        } else {
           return 'no';
        }
     }


echo "<td align='center'>" . "<input type=checkbox name='attendance[".$record['Id']."]' value='". $record['Attendance'] . "' /> </td>";

这种方式将包含所有复选框的数组,其中包含指向服务员ID的链接。

while ($students = mysql_fetch_array($myData)) {
    $UpdateQuery = "UPDATE students SET Attendance=' " . check($students['Id']) . " ' WHERE  Id=$students[Id]";
    mysql_query($UpdateQuery, $con);
}

旁注。不推荐使用mysql_ *函数。你应该继续使用mysqli或PDO并开始使用预备语句