我正在创建一个编辑页面,管理员可以从管理面板中编辑数据库中的一些设置。到目前为止,除了使用复选框之外,一切都在工作。
我创建了四个复选框,每次选中一个复选框时,数据将作为字符串添加到我的数据库中,在数据库中,这些值将以“,”分隔!现在我想创建一个管理员可以更改这些设置的编辑页面。
因此我创建了以下内容:
<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条件有什么问题,或者我应该更改什么,以便如果我的数据库中已存在字符串,则自动检查复选框。
答案 0 :(得分:1)
你需要查看一个&#39;字符串函数&#39;并使用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列中存储多个值的好方法。您是否考虑过存储每个选项的第二个表格?和标识符。它会让您的生活更轻松,因为编辑和删除单个值会更简单,并且更不容易出错。
答案 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'