php - 复选框并从数据库设置其默认选中值

标签 php mysql

我有以下名为artist_genres 的数据库表。我目前有一个函数可以查找艺术家的所有类型 ID,并以面向对象的方式回显它们:

<?php
$artistgenres = Artistgenres::find_all_genres_by_artist_id($_SESSION['artist_id']);
foreach($artistgenres as $artistgenre){
  echo $artistgenre->genre_id."<br>";
}
?>

enter image description here

当 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/

相关文章:

php - php如何转换 bool 变量?

PHP preg_match_all 搜索和替换

php - 为什么不推荐在 PHP 中通过引用调用函数?

php - 在 PHP 中接收多部分 POST 数据请求

共享环境下的 MYSQL AutoCommit

mysql - Oracle DB,mysql不能做什么?

mysql - SQL 引用 WHERE 子句中的别名

javascript - ajax 和 php 之间的数组 json

php - 将数组传递给模型?

php - 哪个Joomla版本低于2并且接近1.5。支持 PHP 5.4 吗?