如何从 PHP 中的数据库中检索复选框值

新手上路,请多包涵

我的问题是如何在 PHP 中从数据库中检索复选框值。下面的代码不起作用。

 <td>Hobby</td>
<?php
    $result = mysqli_query($con,"SELECT hobby FROM simple WHERE id = id");
    while($row = mysqli_fetch_array($result))
    {
        $focus = explode(",", $row['hobby']);
?>
<td>
    <input type="checkbox"  name="hobby[]"  value="Cricket"  size="17"   <?php if(in_array("Cricket",$hobby)) { ?> checked="checked" <?php } ?> >Cricket
    <input type="checkbox" name="hobby[]"  value="Music" size="17" <?php if(in_array("Music",$hobby)) { ?> checked="checked" <?php } ?> >Music
    <input type="checkbox" name="hobby[]"  value="Reading"   size="17" <?php if(in_array("Reading",$hobby)) { ?> checked="checked" <?php } ?> >Reading
    <input type="checkbox" name="hobby[]"  value="Study" size="17" <?php if(in_array("Study",$hobby)) { ?> checked="checked" <?php } ?> >Study</td>
<?php
   }
?>
</tr>

原文由 Vrajesh Savaliya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 241
2 个回答

改变说法,

 $focus=explode(",",$row['hobby']);

到:

 $hobby=explode(",",$row['hobby']);

此外,您可以使用三元运算符而不是 if else 来最小化代码:

 <td>
  <input type="checkbox"  name="hobby[]"  value="Cricket"  size="17" <?php echo (in_array("Cricket",$hobby)) ? 'checked="checked" : '';?>>Cricket
  <input type="checkbox" name="hobby[]"  value="Music" size="17" <?php echo (in_array("Music",$hobby)) ? 'checked="checked" : '';?>>Music
  <input type="checkbox" name="hobby[]"  value="Reading"   size="17" <?php echo (in_array("Reading",$hobby)) ? 'checked="checked" : '';?>>Reading
</td>

此外,@mapek 建议,您的 SQL 将获取所有记录。

 $result = mysqli_query($con,"SELECT hobby FROM simple WHERE id = id");

因为 id 永远等于 id

您应该将其更改为:

 $result = mysqli_query($con,"SELECT hobby FROM simple WHERE id = '$id'");

使用数组最小化此代码的另一个版本:

 <td>
<?php
$hobbies = array('Cricket', 'Music', 'Reading');
if (! empty($hobbies)) {
  foreach ($hobbies as $myHobby) {
    $checked = (in_array($myHobby, $hobby)) ? 'checked="checked"' : '';
?>
<input type="checkbox" name="hobby[]" value="<?php echo $myHobby;?>" size="17" <?php echo $checked;?>><?php echo $myHobby;?>
<?php
    }
}
?>
</td>

原文由 Pupil 发布,翻译遵循 CC BY-SA 3.0 许可协议

试试这个:需要做很多改变

<td>Hobby</td>
    <?php
        $id= 1; // your input id value
        $result = mysql_query("SELECT hobby FROM simple WHERE id = $id");
        while($row = mysql_fetch_array($result))
       {
        $hobby=explode(",",$row['hobby']);

    ?>
    <td><input type="checkbox"  name="hobby[]"  value="Cricket"  size="17"   <?php if(in_array("Cricket",$hobby)) echo 'checked="checked"'; ?> >Cricket
         <input type="checkbox" name="hobby[]"  value="Music" size="17" <?php if(in_array("Music",$hobby)) echo 'checked="checked"'; ?> >Music
         <input type="checkbox" name="hobby[]"  value="Reading"   size="17" <?php if(in_array("Reading",$hobby))  echo 'checked="checked"'; ?> >Reading
         <input type="checkbox" name="hobby[]"  value="Study" size="17" <?php if(in_array("Study",$hobby))  echo 'checked="checked"'; ?> >Study</td>
       <?php
       }
       ?>
</tr>

原文由 Vegeta 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题