基于数据库值设置 PHP 复选框为选中状态

16

我有一个系统,用户在其中填写他们的信息,并稍后可以返回并编辑某些部分。基本上是输入个人信息并选择是否需要知道额外的信息。这些额外信息是复选框,总共有4个。用户最多可以选择其中任意数量,数据库有4个字段设置为no,如果选择了其中一个,则更改为yes。我希望他们能够返回并取消选择或重新选择这4个复选框中的任何一个。因此,我希望当值为yes时,复选框被选中,当值不是yes时,复选框未被选中。

这些字段是tag_1、tag_2、tag_3、tag_4。

非常感谢任何帮助。

我认为需要使用if语句,但不确定如何将其应用于复选框。

<label for="tag_1">Tag 1</label>
<input type="checkbox" name="tag_1" id="tag_1" value="yes" />

Ian


我没有在问题中看到您的 PHP 代码。 - Jocelyn
5个回答

64

从数据库中提取复选框字段的信息。接下来将上面的示例行更改为: (此代码假定您已将用户信息检索到名为dbvalue的关联数组中,并且DB字段名称与HTML表单上的名称相匹配)

<input type="checkbox" name="tag_1" id="tag_1" value="yes" <?php echo ($dbvalue['tag_1']==1 ? 'checked' : '');?>>

如果你在寻找能一步到位的代码,那么你来错地方了。


13

将此代码添加到您的输入标记中

<?php if ($tag_1 == 'yes') echo "checked='checked'"; ?>

3

最简单的方法是添加 "checked" 属性。

<label for="tag_1">Tag 1</label>
<input type="checkbox" name="tag_1" id="tag_1" value="yes" 
    <?php if($tag_1_saved_value === 'yes') echo 'checked="checked"';?> />

嗨,我会更新我的问题以反映你的答案,这完全正确。你理解我在这里想做什么,但现在它显示了正确的可用类别,但是如果我现在检查它们,它不会发布到联接表中,当然也不会显示选中状态,因为没有任何行? - PhpDude

1

如果您想使复选框被选中,请使用checked="checked"属性。


我知道这已经过时了,但我很欣赏“直截了当”的回答。 - Brandon Benefield

1
你可以将数据库的值读入变量中,然后按以下方式设置变量。
$app_container->assign('checked_flag', $db_data=='0'  ? '' : 'checked');

在HTML中,您可以按如下方式使用checked_flag变量。
<input type="checkbox" id="chk_test" name="chk_test" value="1" {checked_flag}>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接