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

时间:2015-08-31 13:56:53

标签: php mysql checkbox

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

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

因此我创建了以下内容:

<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条件有什么问题,或者我应该更改什么,以便如果我的数据库中已存在字符串,则自动检查复选框。

2 个答案:

答案 0 :(得分:1)

你需要查看一个&#39;字符串函数&#39;并使用str_pos http://php.net/manual/en/function.strpos.phpstristr http://php.net/manual/en/function.stristr.php

之类的内容

例如:

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

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

答案 1 :(得分:0)

可能存在空间问题,请检查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'