【问题标题】:Two dependent drop-down lists with the values in two different tables两个从属下拉列表,其中包含两个不同表中的值
【发布时间】:2015-03-03 16:16:00
【问题描述】:

我需要在我的页面中显示两个相关的下拉列表。如果我们从第一个下拉列表中选择一个项目,根据我们选择的项目,它应该过滤第二个下拉列表中的条目,然后我需要使用第二个下拉列表中的值执行搜索.但问题是来自表格的值显示在第一个下拉列表中不是它的活动记录。有人可以帮忙吗?

目前我有第二个下拉列表,它可以根据所选值执行搜索。现在我需要做的是在其上方放置一个下拉列表并根据第一个下拉列表过滤项目。

编辑

第一个表 - client_id, client_name - 第一个下拉列表中的项目应显示客户名称

第二个表——program_id、client_id、program_name——

第三个表 - ad_id、program_id、ad_name - 第二个下拉列表应显示使用 client_id 过滤的 ad_names。

【问题讨论】:

  • 第一个下拉菜单的值是什么数据结构?您应该能够将其转换为可用格式以传递给CHtml::listOptions(),然后您可以将其传递给CHtml::activeDropDownList()
  • 您是如何获得第二个下拉菜单的值的?对第一个执行相同操作,并使用 listOptions 作为下拉列表的数据源
  • 我的要求有一个小改动,我在编辑中添加了,请看一下
  • 好的,那你为什么不为此使用模型呢?所有三个表都可以在一个模型中关联,并且您的下拉列表可以通过这种方式轻松填充。或者您的问题是如何配置模型?
  • 与我的视图相关的活动记录只是第三张表,那么在这种情况下我如何访问第一张表?是的,我确实有所有 3 张桌子的模型。

标签: php yii


【解决方案1】:

我终于做到了,就是这样。

在我的控制器中,

public function actionDynamicDropdownList()
   {
    if($_POST['client_id'] > '0') {
        $result = Yii::app()->db->createCommand()->select('program_id, program_name')->from('program')->where('client_id='.$_POST['client_id'].'')->order('program_name')->queryAll();
        $this->render('admin', array(
            'result' => $result,
        ));
      }
}
public function actionDynamicProgramsList()
{
    if($_POST['program_id'] > '0') {
        $results = Yii::app()->db->createCommand()->select('ad_id, ad_name')->from('ads')->where('program_id='.$_POST['program_id'].'')->order('ad_name')->queryAll();
        $this->render('admin', array(
            'results' => $results,
        ));
    }
}

在我看来,我已经添加了

<?php
$data = Yii::app()->db->createCommand()->select('client_id, client_name')->from('client')->order('client_name')->queryAll();
echo CHtml::dropDownList('client_id', '',CHtml::listData($data,'client_id','client_name'), array(
'empty'=>'- Select Client Name -',
'ajax'=> array(
'type'=>'POST',
'url'=>Yii::app()->baseUrl.'/index.php?r=page/dynamicDropdownList',
'update'=>'#program_id'))); 

//empty since it will be filled by the above dropdown
echo CHtml::dropDownList('program_id','', CHtml::listData($result,'program_id','program_name'), array(
'empty'=>'- Select Program Name - ',
'onchange'=>'alert(this.value);',
'ajax'=> array(
'type'=>'POST',
'url'=>Yii::app()->baseUrl.'/index.php?r=page/dynamicProgramsList',
'update'=>'#ad_id')));
    //empty since it will be filled by the above dropdown
echo CHtml::dropDownList('ad_id','', CHtml::listData($results,'ad_id','ad_name'), array(
'empty'=>'- Select Ad Name - ',

));
?>

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多