使用复选框更新MySql表

时间:2011-01-04 10:33:19

标签: php mysql checkbox

我一直在互联网上搜索这个问题几天,但我不断碰壁砖墙。

我所拥有的是一个表格,其中包含一个管理区域内的复选框,用作每月“待办事项”列表。它本质上是一个每月要做30件左右的事情的工作表,必须每个月检查一次,如果适用则添加注释。

我已经设法通过mysql获取复选框,并在某处显示为刻度列表。我只是将我的设置值设置为1并在提交时更新了sql表。

我必须在这里覆盖我的基地,并且如果错误地勾选了项目,也可以选择取消勾选项目。但我无法弄清楚这是如何完成的。

以下是我的检查代码......对此事的任何帮助都会很棒。

    <?php   
$currentTask = '';
echo "<tr class='tr'>";
while ($seolistRow = mysql_fetch_array($seolistRes)) {
    $taskValue = $seolistRow["taskValue"];
    $worksheetID = $seolistRow["worksheetID"];
    $taskName = $seolistRow["taskName"];
    $taskInfo = $seolistRow["taskInfo"];

    if ($taskValue == 1) {
            $taskDone = "<input type='checkbox' value='1' class='checkbox' name='checkbox".$worksheetID."' id=checkbox'".$worksheetID."' checked='checked' /><div class='taskinfo'>".$taskInfo."</div>";
    }
    else {
            $taskDone = "<input type='checkbox' value='0' class='checkbox' name='checkbox".$worksheetID."' id='checkbox".$worksheetID."' />";
    }
    if ($currentTask != $taskName) {
        echo "</tr>";
        echo "<tr class='tr'>";
        echo "<td class='task'>".$taskName."</td>";
    }
echo "<td class='tick'>".$taskDone."</td>";
$currentTask = $taskName;
}
echo "</tr>";
?>

编辑:

当我将其保存到数据库时,我使用以下代码:

if (isset($_POST["update"])) {  
$item = $_POST;
    foreach($item as $key => $value) {
        $wsID = str_replace("checkbox","",$key);

        if (is_numeric($wsID)) {
            $updateWSQ = "UPDATE seo_work SET taskValue=$value WHERE worksheetID=$wsID AND userID=$userID";
            mysql_query($updateWSQ) or die(mysql_error());
            header("Location: worksheet.php?userID=$userID&action=success");
        }
    }

}

我想要它做的是当我选中一个复选框并单击提交时,它将数据库中的值保存为1.(这适用于此)但是当我取消选中该复选框时我希望它删除值并将其替换为0。

然后,这将显示在安全登录区域中,供每个客户查看。这是一个多用户登录/复选框系统。

即10个人将能够登录并更新待办事项列表,然后20个用户/查看者可以看到已经取得了哪些进展。

将db中的数据显示在表中并不是我所做的问题,我只是将db“taskValue”从1更改为0和0到1时出现问题。

2 个答案:

答案 0 :(得分:0)

你可以使用jQuery。

<script>
$(document).ready(function() {
    $("input[type=checkbox]").click(function() {
        var isSel = this.checked;
        $.ajax({
            url: 'urlToYourScriptThatExecuteSQL.php',
            type: 'POST',
            dataType: 'json',
            data: {
                id : this.id,
                isSelected : isSel
            },
            success: function(data) {
                alert('nice');
            },
            error: function() {
                alert('error');
            }
        });
    });
});
</script>

注意:您的urlToYourScriptThatExecuteSQL.php收到$_POST['id']$_POST['isSelected']

答案 1 :(得分:0)

试试这个:

<?php
if ( count($_POST['task']) ) {
  $q = "update task_table set taskValue=0";
  mysql_query($q);

  foreach($_POST['task'] as $k=>$v) {
    $q = "update task_table set taskValue=1 where worksheetID=$k";
    mysql_query($q);
  }
}
?>
<form action="" method="post">
<?php
while ($seolistRow = mysql_fetch_array($seolistRes)) {
  $taskValue = $seolistRow["taskValue"];
  $worksheetID = $seolistRow["worksheetID"];
  $taskName = $seolistRow["taskName"];
  $taskInfo = $seolistRow["taskInfo"];
  echo '<input type="checkbox" name="task['.$worksheetID.']" id="task_'.$worksheetID.'"'.(($taskValue)?' checked="checked"':'').' />';
}
?>
<input type="submit" value="submit" />
</form>

这会给你带来类似的东西:

<form action="">
<input type="checkbox" name="task[1]" id="task_1" checked="checked" />
<input type="checkbox" name="task[2]" id="task_2" />
<input type="checkbox" name="task[3]" id="task_3" checked="checked" />
<input type="checkbox" name="task[4]" id="task_4" checked="checked" />
<input type="submit" value="submit" />
</form>

无论是否选中该复选框,查询都将自动更新数据库。一页,一个检查/取消选中脚本。