多个复选框更新查询


Multiple Checkbox Update Query

我有一个应用程序,其中包含来自数据库表的多个值,这些值与单个复选框一起生成。当然,复选框被赋予一个与数据库相关联的值。

现在我要做的是提交更新数据库给定的值检查或未检查。如果我在HTML中硬编码这些值,这将是简单的,但由于这些值是数据库驱动的,我不确定我将如何去做这件事。

很简单:我想更新数据库给定的复选框值被选中或不。

你的题目说的是"单选"按钮,但你的问题问的是"复选框"。它们是非常不同的东西。下面是一个例子。

    <input type="radio" name="fish" value="one"> One Fish
    <input type="radio" name="fish" value="two"> Two Fish
    <input type="radio" name="fish" value="red"> Red Fish
    <input type="radio" name="fish" value="blue"> Blue Fish

上面是一个单选按钮输入数组的例子。它包含一个字段名("fish")和四个可能的值("one"、"two"、"red"、"blue")。

因为它是一个单选按钮,所以在任何给定的时间只有一个选项是有效的。这意味着您要么获得"一个"或"两个"或"红色"或"蓝色",但不可能同时选择"一个"answers"红色",除非字段名称不同(例如"数字","颜色")。

复选框是二进制的,就像一个电灯开关。它们不是开着就是关着。每个复选框代表它自己的字段名。

    <input type="checkbox" name="light"> On
    <input type="checkbox" name="status"> Single?
    <input type="checkbox" name="featured"> Featured

您可以根据需要检查任意多个字段,因为每个字段都有自己单独的字段名,可以是true或false (on或off)。

因为我不知道你说的是哪一个,我将分别给出简单的例子。

首先是无线电的例子:

    <? $types = array("one","two","three","four"); ?>
    <? foreach ($types as $type): ?>
         <input type="radio" name="fish" value="<?= $type ?>"/> <?= ucwords($type) ?> Fish
    <? endforeach ?>

提交表单后,您将得到类似于以下的响应:

    Array
    (
        [fish] => "one"
    )

假设单选按钮数组中选择了"one"

现在,复选框的例子:

    <? $fields = array("light", "status", "featured"); ?>
    <? foreach ($fields as $field): ?>
        <input type="checkbox" name="<?= $field ?>"/> <?= ucwords($field) ?>
    <? endforeach ?>

这提供了与上面基于HTML的示例相同的HTML输入。如果检查一个字段并提交表单,结果将如下所示:

    Array
    (
        [light] => "on"
        [status] => 
        [featured] => "on"
    )

如果复选框被选中,则为"on",如果复选框未被选中,则为空白(或可能为"off")。

取决于哪一个,您将需要通过获取这些响应并解析它们来将这些值插入数据库,然后创建一个SQL查询。

对于单选按钮,变量很简单:
    $fish = $_POST['fish'];
    $sql = 'INSERT INTO fishes (fish) VALUES ('.mysql_real_escape_string($fish).')';
    mysql_query($sql);

有了复选框,这就有点困难了:

    $light = $_POST['light'] == 'on' ? 1 : 0;
    $status = $_POST['status'] == 'on' ? 1 : 0;
    $featured = $_POST['status'] == 'on' ? 1 : 0;
    $sql = "INSERT INTO checkboxes (light, status, featured) VALUES ($light, $status, $featured)";
    mysql_query($sql);
正如你所提到的,你的问题相当模糊。我希望我的回答能提供足够的信息,让你朝着你需要去的方向开始。当然,这是一个超级基本的示例,您可能希望动态生成SQL语句,这样您就不必硬编码每个字段或将其应用于更通用的函数来处理多种类型的表单。 不管怎样,祝你好运。

对于那些想知道我是如何做到这一点的人,下面是我的代码:

$publish = $_POST['publish'];
while (list ($key,$val) = @each ($publish)) 
{
    $temp=mysql_query("SELECT * FROM temp WHERE id = '$val'");
    while($row = mysql_fetch_array($temp))
{
$id = $row['id'];
$title = $row['title'];
$maintext = $row['maintext'];
$order = $row['order'];
$pageID = $row['pageID'];
$sql = "INSERT INTO content (id, title, maintext, order, pageID) VALUES ({$row['id']}, {$row['title']}, {$row['maintext']}, {$row['order']}, {$row['pageID']})";
$sql2 = "UPDATE content SET `title` = '$title', `maintext` = '$maintext', `order` = '$order', `pageID` = '$pageID' WHERE `id` = '$id'";
$sql3 = "DELETE FROM temp WHERE id = '$id'";
mysql_query($sql);
    mysql_query($sql2);
    mysql_query($sql3);
    }
} 
?>