复选框并从数据库

时间:2017-03-23 00:50:14

标签: php mysql

我有以下名为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>";
}
?>

enter image description here

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

但是,我很难将其放入代码中。你能救我一下吗?

1 个答案:

答案 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

}