我有以下名为artist_genres 的数据库表。我目前有一个函数可以查找艺术家的所有类型 ID,并以面向对象的方式回显它们:
<?php
$artistgenres = Artistgenres::find_all_genres_by_artist_id($_SESSION['artist_id']);
foreach($artistgenres as $artistgenre){
echo $artistgenre->genre_id."<br>";
}
?>
当 ID 为 8 的艺术家登录并进入此页面时,我希望他能够更新与他们关联的当前类型 ID。
表单数据如下所示:
<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>
因此,对于经典示例,我想要实现的目标是查找并找到所有类型_id,查看值 2 是否在类型_id 列表中,如果是,则将标记更改为:
<label><input type="checkbox" name="Genres[]" value="2"<? php if(somecondition = 2) {echo "checked"} ?> >Classical</label>
但是,我很难将其放入代码中。你能帮我一下吗?
最佳答案
将用户所有选定的类型放入一个数组中:
$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
}
关于php - 复选框并从数据库设置其默认选中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42965287/