【问题标题】:Automatcially check checkbox based on database array PHP基于数据库数组 PHP 自动勾选复选框
【发布时间】:2023-04-03 00:45:01
【问题描述】:

在我页面的“用户设置”选项卡中,我希望用户确定来自特定用户的帖子类型。这是表格:

<form method="post" action="" name="permitted_categories">
                Select or deselect which types of Posts that you would like to see. 
                <p>
                <?
                $cat_query = mysqli_query($con, "SELECT permitcat FROM permitted WHERE username='$userLoggedIn' AND friendname='$username'")
                ?>
                    <label>
                      <input type="checkbox" name="categories[]" value="Life" id="Life" <? echo $checked;?>>
                      Life</label>
                    <br>
                    <label>
                      <input type="checkbox" name="categories[]" value="Politics" id="Politics" <? echo $checked;?>>
                      Politics</label>
                    <br>
                    <label>
                      <input type="checkbox" name="categories[]" value="Entertainment" id="Entertainment" <? echo $checked;?>>
                      Entertainment</label>
                    <br>
                    <label>
                      <input type="checkbox" name="categories[]" value="Food" id="Food" <? echo $checked;?>>
                      Food</label>
                    <br>
                    <label>
                      <input type="checkbox" name="categories[]" value="BusFin" id="BusFin" <? echo $checked;?>>
                      Business/Financial</label>
                    <br>
                    <label>
                      <input type="checkbox" name="categories[]" value="Fitness" id="Fitness" <? echo $checked;?>>
                      Fitness/Health</label>
                    <br>
                    <input type="submit" name="update_categories" id="update_categories">
                    <? 
                      if(isset($_POST['update_categories'])) {
                          $permitted_categories = $_POST['categories'];

                          echo "You will only see the following categories from ". $profile_user_obj->getFirstAndLastName() .": ";
                          foreach ($permitted_categories as $permcat){
                            echo $permcat .", ";
                        }

                          $values  = implode(", ", $permitted_categories);
                          $permit_query = mysqli_query($con, "INSERT INTO permitted (id, username, friendname, permitcat) VALUES('','$userLoggedIn', '$username', '$values')");   
                        } ?>
              </p>
            </form>

我要做的是自动检查在数组中找到相应值的框。

我尝试了几件事,但无法让代码正常工作。

【问题讨论】:

  • 什么在响应这个查询。 $cat_query = mysqli_query($con, "SELECT permitcat FROM allowed WHERE username='$userLoggedIn' ANDfriendname='$username'")。取决于您必须将响应数组与您的字段进行比较的响应,然后“检查”与否。
  • 我最初创建了一个 IF 语句,将复选框数组与数据库中的数组进行比较,然后发送一个 UPDATE,但是,这不起作用,而是在数据库中创建了双条目正确,另一个没有在 permitcat 列中插入任何内容。

标签: php html mysqli


【解决方案1】:
<input type="checkbox" name="categories[]" value="Life" id="Life" <?php if($something) { echo "checked"; }?>>

这可能因数组内容而异
这里有一些例子

$assoc_array = [
    "life" => "yes",
    "food" => "no",
];

if($assoc_array['life'] == "yes"){ echo "checked"; }

$array = [
    "life",
    "food"
];

if (in_array("food", $array)) {
    echo "checked";
}

$assoc_array_bool = [
    "life" => "whatever",
    "food" => "whatever"
];

if($assoc_array_bool['life']){ echo "checked"; }
// would not check the checkbox
// if you replaced $assoc_array_bool['life'] with $assoc_array_bool['sport']

【讨论】:

  • 关于检查"yes",你可以使用PHP的filter_var来检查常见的检查值:filter_var($assoc_array['life'], FILTER_VALIDATE_BOOLEAN)`。
  • 我使用了 if(in_array("food", $array)){ echo "checked";} 但是我的 $array 正在从数据库中提取。我在页面顶部回显出数组信息,它正在从数据库中获取信息,但in_array 似乎没有按应有的方式工作。
  • 这些只是示例,并且由于您的数据库可能与我向您展示的数组的结构不同:这几乎没有机会工作。如果您发布了 sql 请求的输出,我们可以为您提供一个工作示例。
【解决方案2】:

这很简单。

HTML 文档:

<input type="checkbox" name="Name" value="Value" id="Id" checked>

如果你在输入标签的末尾写上“checked”,这将被检查,正如单词所说;)

还有一点,别混标签:

<input type="checkbox" name="Name" value="Value" id="Id" checked>
<label>Life</label>

最后,如果你一开始就这样做,你的代码就可以工作了:

$checked = 'checked';

但这会检查所有框,您需要检查一些内容,如下所示:

<?php $checked = 'checked'; ?>
<input type="checkbox" name="categories[]" value="BusFin" id="BusFin" <?php echo if($something == $otherThing) echo $checked;?>   >

【讨论】:

  • 这对我原来的问题没有帮助。
猜你喜欢
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多