php - 多复选框更新查询

标签 php mysql html

我有一个应用程序,其中包含我在各个复选框旁边生成的数据库表中的多个值。复选框被赋予一个与数据库相关联的值。

现在我想做的是提交更新数据库,给定选中或未选中的值。如果我在 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”)。

由于它是一个单选按钮,因此在任何给定时间只有其中一个选项有效。这意味着您要么得到“一”或“二”或“红”或“蓝”,但不可能同时选择“一”和“红”,除非字段名称不同(“数字” ”、“颜色”等)。

复选框是二进制的,就像电灯开关一样。它们要么打开要么关闭。每个复选框代表其自己的字段名称。

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

您可以根据需要检查其中的任意多个,因为每个字段都有自己的字段名称,可以是 true 或 false(打开或关闭)。

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

首先是广播例子:

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

提交表单后,您将得到类似这样的响应:

    Array
    (
        [fish] => "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"
    )

如果复选框被选中,则“开”是空白(或者可能是“关闭”),如果复选框未被选中。

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

有了单选按钮,变量会很简单:

    $fish = $_POST['fish'];
    $sql = 'INSERT INTO fishes (fish) VALUES ('.mysql_real_escape_string($fish).')';
    mysql_query($sql);

有了checkbox,会稍微有点难度:

    $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 语句,这样您就不必对每个字段进行硬编码或将其应用于更通用的函数来处理多种类型的表单。

无论如何,祝你好运。希望这会有所帮助。

关于php - 多复选框更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042690/

相关文章:

php - 分解并从数组中选择每个元素

MySQL : Timestamps replicating inconsistently depending on local timezone of server?

php - 单表内连接mysql

mysql - 为什么我不能在我的 MySQL 数据库中保存长文本?

如果到达它的页面部分,一页网站,jquery 滚动位置会更改 anchor 链接颜色

HTML5 拖放 - 在 Safari 中检测文件夹(FileList、File)

javascript - JS变量转换失败——使用AJAX从PHP获取时间

php - session 值不会出现

php - 如何使用 urllib 对 url 进行编码

PHP 或 MySql 错误;可以在浏览器中显示 "error page"吗?