我现在正在创建一个编辑页面,管理员可以从管理面板编辑数据库内的一些设置。到目前为止,除了复选框的工作之外,一切都正常。
我创建了四个复选框,每次复选框被选中时,数据将作为字符串添加到我的数据库中,并且在数据库中,这些值用","分隔!现在我想做一个编辑页面,管理员可以改变这些设置。
因此我创建了如下内容:
<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'