codeigniter - 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>
感谢您查看它。
解决方案
您可以稍微清理一下您的代码并创建一个变量 $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);?>
推荐阅读
- r - 清理数据框中的电子邮件列
- flutter - 在 Flutter 项目的 FuturBuilder 中使用 StreamBuilder 是否正确?
- azure - 哪个 Azure 云存储可以满足我的要求?
- java - Spring abac 数据过滤与 Spring @PostFilter
- react-query - 如何在 axios 中使用 react-query 突变?
- python-3.x - 如何在 python 中以 hh:mm 格式获取时间?
- flutter - 数据显示为 NULL,除非我做一个小的改变来强制热重载。为什么一开始没有呢?
- javascript - 没有处理 React 的斜杠
- c - c程序不要求sub_name?
- python - 从菜单模式和终端模式运行时,CUDA 结果不同