Automatcially check checkbox based on database array PHP

十年热恋 提交于 2020-01-30 06:42:18

问题


In the "User Setting" tab of my page, I want the user to determine which types of posts from a specific user. Here is the form:

<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>

What I am trying to do is automatically check the boxes where the corresponding values are found in an array.

I have tried several things, but cannot get the code to work.


回答1:


this is pretty simple.

The HTML documentation:

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

If you write "checked" at the end of the input Tag, this will be checked, as word says ;)

Another thing, don't mix tags:

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

And finally, your code will work if you make this at the beginning:

$checked = 'checked';

But this will check all boxes, you will need to check something, like this:

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



回答2:


<input type="checkbox" name="categories[]" value="Life" id="Life" <?php if($something) { echo "checked"; }?>>

this may vary depending of the array content
here some examples

$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']


来源:https://stackoverflow.com/questions/43034324/automatcially-check-checkbox-based-on-database-array-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!