首页 > 解决方案 > select 显示数据库中的顶部记录,而不是选定的

问题描述

我在更新后端数据库的表单上有一个选择。我的问题是,当显示表单时,它总是显示数据库中的顶部记录而不是选定的记录。

我已经用谷歌搜索并阅读了有关 stackoverflow 的答案,但我尝试的一切要么不起作用,要么破坏了功能。

$registrants 指向 registrants 表上的选择。$affiliates 指向附属表上的选择

这是选择:

<select name="affiliate_id" class="form-control"> 
   <?php foreach($affiliates as $display => $value) { ?>
       <option value='<?= $value['affiliate_id'] ?>' <?php if($registrants['affiliate_id'] == $value['affiliate_id']) { ?>selected='selected'<?php } ?>><?= $value['affiliate_name'] ?>
       </option>
   <?php } ?>
</select>

感谢您查看它。

标签: codeigniterbootstrap-4

解决方案


您可以稍微清理一下您的代码并创建一个变量 $selected,它可以是空的,也可以是字符串“已选择”:

<select name="affiliate_id" class="form-control"> 
    <?php 
        foreach($affiliates as $value):
            $selected=$registrants['affiliate_id'] == $value['affiliate_id']?'selected':'';
    ?>
            <option value="<?=$value['affiliate_id']?>" <?=$selected?> >
                <?= $value['affiliate_name'] ?>
            </option>
    <?php 
        endforeach;
    ?>
</select>

或者您可以使用 CI 函数form_dropdown(),因为不要忘记加载表单助手。这个方法稍微简化了下拉列表的使用:

$this->load->helper('form');
$data=array('class'=>'$affiliates');
// get the selected item
<?php 
    foreach($affiliates as $value){
        $selected=$registrants['affiliate_id'] == $value['affiliate_id']?$value['affiliate_id']:'';
        if($selected){break;}
    }
?>
<?=form_dropdown('affiliate_id', $affiliates, $selected, $data);?>

推荐阅读