PHP在复选框中显示数据

时间:2017-01-23 14:27:29

标签: php checkbox foreach

如何显示jokecategory表中选中的复选框,以及那些不显示但未选中的复选框。这就是我目前所拥有的:

<div class="control-group">
        <?php 
        $sql = 'SELECT jokecategory.joke_id, jokecategory.category_id, category.name 
        FROM jokecategory
        INNER JOIN category ON category.id = jokecategory.category_id
        WHERE joke_id= :joke_id';
        $stmt = $dbConnection->prepare($sql);
        $stmt->bindValue(':joke_id', $id);
        $stmt->execute();

        ?>

        <fieldset>
        <legend class="control-label">Categories:</legend>
        <?php foreach ($stmt as $row) { ?>
            <div class="controls">
                <label for="category<?php echo($row['category_id']);?>">
                <input type="checkbox" id="category<?php echo $row['category_id']; ?>" name="checkbox[]" value="<?php echo $row['category_id']; ?>" checked>
                <?php echo($row['name']); ?></label>
            </div>
        <?php } ?>

with(类别表中的数据):

<?php $sql = 'SELECT id, name FROM category'; 
                    foreach ($dbConnection->query($sql) as $data) { ?>
                    <div class="controls">      
                        <label for="category<?php echo($data['id']);?>">
                        <input type="checkbox" name="categories[]" id="category<?php echo($data['id']); ?>" value="<?php echo($data['id']); 



                        ?>">
                        <?php echo($data['name']); ?></label>
                    </div>
                    <?php } ?>

            </fieldset>
        </div>

目前它分为两部分,因为我不确定如何将数据显示输出到一个合并组中。所以它就像:

Joke id: xxxxx
joke_text: xxxxxx
author_name: xxxxx

categories 
1: [x]
2: [x]
3: [ ]
4: [ ]

3 个答案:

答案 0 :(得分:0)

我不确定,但是 - $ data [“category_id”]真的是一个数组吗?如果是这样,您可以像这样使用该数组中的密钥对:

<?php foreach ($data['category_id'] as $id => $checkbox) { ?>
  <input type="checkbox" id="<?php echo $id; ?>" name="checkbox[]" />
<?php } ?>

答案 1 :(得分:0)

可能就像下面检查你的SQL查询并添加类别名称来获取和显示例如。 category_name在下面使用 并进行如下修改

<fieldset>
        <legend class="control-label">Categories:</legend>
        <?php foreach ($data as $checkbox) { ?>
            <div class="controls">      
                <label for="category<?php echo($checkbox['category_id']); ?>">
                    <input type="checkbox" name="categories[]" id="chk_category<?php echo($checkbox['category_id']); ?>" value="<?php echo($checkbox['category_id']); ?>">
                    <?php echo($checkbox['category_name']); ?></label>
            </div>
        <?php } ?>
    </fieldset>

答案 2 :(得分:0)

我不确定我完全理解这个问题,但你试过吗

foreach ($data['category_id'] as $id => $checkbox)