动态下拉框更改取决于CakePHP中的数据库

时间:2014-01-10 06:08:14

标签: php jquery mysql cakephp

我是CakePHP的新手,问题是我需要创建动态值来下拉来自mysql的值。以下是我在控制器中使用的代码:

$wires = $this->wire->find('all',array('conditions'=>array('wire_id'=>$wire_id)));
foreach($wires as $key=>$gs) {
    $options[$gs['wires']['type_of_wire']] = $gs['wires']['type_of_wire'];
    $options1[$gs['wires']['length']] = $gs['wires']['length'];
    $options2[$gs['wires']['color']] = $gs['wires']['color'];
}

在ctp中

echo $this->Form->input('wire', array('type' => 'select', 'class'=>'dropdn', 'options'=> $options, 'selected'=> $options, 'div'=>false, 'label'=>false,'id'=>'metal'));
echo $this->Form->input('wire', array('type' => 'select', 'class'=>'dropdns', 'options'=> $options1, 'selected'=> $options, 'div'=>false, 'label'=>false,'id'=>'metal'));
echo $this->Form->input('wire', array('type' => 'select', 'class'=>'dropdned', 'options'=> $options1, 'selected'=> $options, 'div'=>false, 'label'=>false,'id'=>'metal'));

这里我创建了三个下拉框,但问题是如果我更改下拉框值的线类型意味着它动态地改变其正确的长度和颜色以用于下拉框的其余部分。

我也尝试过ob onchange但是我不能。

1 个答案:

答案 0 :(得分:2)

使用AJAX调用动态下拉列表。在您的布局/您定义了jquery的地方这样的东西......

$('#metal').change(function() {
var wire= $(this).val();
    $.ajax({
    type: "POST",
    url: "HERE GIVE URL TO YOUR ACTION WHERE YOU FETCH DATA FROM TABLE",
    data: { wire: wire , submit: "submit" },
    success: function(result){
                $("#metal").html(result);
            }
    });
  });
})

然后在你的控制器中,ajax调用的动作 -

public function get_wires()
{
    $this->autoRender=false; 
    $value=$_POST['wire'];
    $wire_length = $this->wire->find('list',array('fields' => array('wire_length'),'conditions' => array('wire'=>$value)));
    foreach($wire_length as $q)
    {                                                       
        $data[]="<option>".$q."</option>";              
    }
    print_r($data);
}

然后发布此值,您将进入view.ctp页面中的表单。