我有以下名为artist_genres的数据库表。我目前有一个函数可以找到艺术家的所有genre_id,并以面向对象的方式回显它们:
<?php
$artistgenres = Artistgenres::find_all_genres_by_artist_id($_SESSION['artist_id']);
foreach($artistgenres as $artistgenre){
echo $artistgenre->genre_id."<br>";
}
?>
当id为8的艺术家登录并进入此页面时,我希望他能够更新与他们相关的当前genre_ids。
表单数据如下:
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div class="checkbox">
<label><input type="checkbox" name="Genres[]" value="2">Classical</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="Genres[]" value="3">Hiphop</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="Genres[]" value="4">Jazz</label>
</div>
<input type="submit" name="submit" class="btn btn-primary btn-lg active" id="grad" value="Login" />
</form>
如此有效,对于经典示例,我想要实现的是查找并查找所有genre_id,看看值2是否在genre_ids列表中,如果是,则将标记更改为:
<label><input type="checkbox" name="Genres[]" value="2"<? php if(somecondition = 2) {echo "checked"} ?> >Classical</label>
但是,我很难将其放入代码中。你能救我一下吗?
答案 0 :(得分:1)
将用户的所有选定类型放在数组中:
$selectedgenres = array();
foreach($artistgenres as $artistgenre){
$selectedgenres[] = $artistgenre->genre_id;
}
列出所有类型的复选框(我假设您有一个单独的表格,适用于所有类型)。然后使用in_array()
检查每个类型是否属于用户所选类型的一部分:
foreach(your condition here for getting all genres){
?>
<div class="checkbox">
<label><input type="checkbox" name="Genres[]" value="<?=($genreid)?>"><?=($genredesc)? <?php echo (in_array($genreid, $selectedgenres))?' checked':''; ?>></label>
</div>
<?php
}