【问题标题】:Updating SQL checkbox without array更新没有数组的 SQL 复选框
【发布时间】:2015-05-19 02:50:44
【问题描述】:

我有这段代码,我可以在其中添加并稍后更新多个复选框。我已经可以将复选框的值添加到数据库中,但是在更新它时遇到了问题。为复选框插入数据库的值为 1 或 0。

插入 HTML 代码:

<tr>
  <td align="center" width="150"><input type="hidden" name="leave_al" value="0" />
                                 <input type="checkbox" name="leave_al" value="1">Annual Leave </td>
  <td align="center" width="150"><input type='text' size='15' name='annual_days' id='annual_days'> day(s) </td>
</tr> 

<tr>
  <td align="center" width="150"><input type="hidden" name="leave_matl" value="0" />
                                 <input type="checkbox" name="leave_matl" value="1">Maternity Leave </td>
  <td align="center" width="150"><input type='text' size='15' name='maternity_days' id='maternity_days'> day(s) </td>
</tr>

更新 HTML 代码:

<?php 
        if ($row2['leave_al'] == 1)
        {
            echo "<td><input type='checkbox' name='leave_al' value='1' checked> Annual Leave </td>";
        }
        else
        {
            echo "<td><input type='checkbox' name='leave_al' value='0'> Annual Leave </td>";
        }

        if ($row2['leave_matl'] == 1)
        {
            echo "<td><input type='checkbox' name='leave_matl' value='1' checked> Maternity Leave </td>";
        }
        else
        {
            echo "<td><input type='checkbox' name='leave_matl' value='0'> Maternity Leave </td>";
        }
    ?>           

更新流程代码:

if(isset($_POST['update']))
{
    $leave_al = $_POST['leave_al'];
    $leave_matl = $_POST['leave_matl']; 

    $query = "UPDATE leaves 
    SET leave_al = '".$leave_al."', leave_matl = '".$leave_matl."',
    WHERE emp_id= '$id'";
}

根据上面的编码,当我选中该框时,值 1 或 0 并没有保存在数据库中。

我见过的很多例子都展示了如何使用数组进行更新。如果您能帮助我指导正确的方法来更新复选框并更改 1 0 值。谢谢!

【问题讨论】:

    标签: php sql checkbox sql-update


    【解决方案1】:

    最初我看到的问题是您从未在 UPDATE 语句中设置 $id 。也许你需要:

    $id = $_POST['leave_id'];
    

    (我不确定您如何在表单中设置 id)。

    其次,删除隐藏的输入 - 它们不是必需的,如果您移动代码可能会导致问题。

    在处理代码上,更改这一行:

    $leave_al = $_POST['leave_al'];
    

    $leave_al = ($_POST['leave_al']=="1"?1:0);
    

    这是三元运算符 - 它表示“如果它是 == 1,则将 $leave_al 设置为 1,否则 $leave_al 为 0。这样无论复选框是否被选中,您的更新 stmt 都是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 2018-06-05
      相关资源
      最近更新 更多