如果数据在数据库中,则自动选中复选框


Automatically check a checkbox if data is in database

我现在正在创建一个编辑页面,管理员可以从管理面板编辑数据库内的一些设置。到目前为止,除了复选框的工作之外,一切都正常。

我创建了四个复选框,每次复选框被选中时,数据将作为字符串添加到我的数据库中,并且在数据库中,这些值用","分隔!现在我想做一个编辑页面,管理员可以改变这些设置。

因此我创建了如下内容:

<div class="form-group">
 <label class="control-label col-md-3 col-sm-3 col-xs-12">Menüarten:</label>
    <div class="col-md-9 col-sm-9 col-xs-12">
    <input type="checkbox" name="menuearten[]" value="Menü traditionell" <?php if($_SESSION['data']['menueart'] == 'Menü traditionell') echo 'checked = "checked"' ?>> 1. Menü traditionell <? if ($_SESSION['data']['menueart'] == "Menü traditionell") echo "<span class='label label-success'>Aktuelle Auswahl</span>"; ?><br />
    <input type="checkbox" name="menuearten[]" value="Menü vegetarisch" <?php if($_SESSION['data']['menueart'] == 'Menü vegetarisch') echo 'checked = "checked"' ?>> 2. Menü vegetarisch <? if ($_SESSION['data']['menueart'] == "Menü vegetarisch") echo "<span class='label label-success'>Aktuelle Auswahl</span>"; ?><br />
    <input type="checkbox" name="menuearten[]" value="Menü Nudelgerichte"<?php if($_SESSION['data']['menueart'] == 'Menü Nudelgerichte') echo 'checked = "checked"' ?>> 3. Menü Nudelgerichte <? if ($_SESSION['data']['menueart'] == "Menü Nudelgerichte") echo "<span class='label label-success'>Aktuelle Auswahl</span>"; ?><br />
    <input type="checkbox" name="menuearten[]" value="Menü Gebackenes"<?php if($_SESSION['data']['menueart'] == 'Menü Gebackenes') echo 'checked = "checked"' ?>> 4. Menü Gebackenes <? if ($_SESSION['data']['menueart'] == "Menü Gebackenes") echo "<span class='label label-success'>Aktuelle Auswahl</span>"; ?><br />

使用$_SESSION['data']['menueart'],我从数据库中获取所有数据。这在其他领域也已经起作用了。我的代码是:

$user_id = $_GET['id'];
$get_schulen = "SELECT * FROM schule WHERE id = '$user_id'";
$result_get_schulen = mysqli_query($connect, $get_schulen);
$_SESSION['data'] = mysqli_fetch_assoc($result_get_schulen);

现在我的问题是,我想检查所有的复选框当管理员访问编辑页已经在我的数据库。这是我当前条目的一张图片:http://awesomescreenshot.com/0b5573hi81

因此,如果我在我的编辑页面,前两个复选框应该被选中,但他们没有。有人能告诉我我的IF条件有什么问题,或者我应该改变什么,以便如果一个字符串已经存在于我的数据库中,那么复选框将自动选中。

您需要查看'字符串函数'并使用str_pos http://php.net/manual/en/function.strpos.php或stristr http://php.net/manual/en/function.stristr.php

,

(stristr($_SESSION['data']['menueart'],'Menü traditionell') ? 'checked = "checked"' : '' );

这不是在一个db列中存储多个值的好方法。您是否考虑过用第二个表来存储每个"选择"和标识符?它将使您的生活更轻松,因为它将更简单地编辑和删除单个值,并且更不容易出错。

可能存在空间问题,请检查trim()

<input type="checkbox" name="menuearten[]" value="Menü traditionell" <?php if($_SESSION['data']['menueart'] == 'Menü traditionell') echo 'checked = "checked"' ?>> 

<input type="checkbox" name="menuearten[]" value="Menü traditionell" <?php if(trim($_SESSION['data']['menueart']) == 'Menü traditionell') echo 'checked = "checked"' ?>> 

还有,这一行需要修改

echo 'checked = "checked"'

echo 'checked = checked'