Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CodeIgniter中使用类别和子类别进行链选择_Codeigniter - Fatal编程技术网

在CodeIgniter中使用类别和子类别进行链选择

在CodeIgniter中使用类别和子类别进行链选择,codeigniter,Codeigniter,如何在CI中创建下拉选择菜单,以便如果我选择了一个类别,子类别将显示在同一页面上,而无需刷新浏览器?您应该通过AJAX执行此操作并检索子类别。准备好子类别或下拉列表 将PHP返回的值追加到下拉列表中 一些伪代码: $.each(data, function(key, value) { $('#subcategories'). append($("<option></option>").attr("value",key).text(val

如何在CI中创建下拉选择菜单,以便如果我选择了一个类别,子类别将显示在同一页面上,而无需刷新浏览器?

您应该通过AJAX执行此操作并检索子类别。准备好子类别或下拉列表

将PHP返回的值追加到下拉列表中

一些伪代码:

$.each(data, function(key, value)
{   
     $('#subcategories').
          append($("<option></option>").attr("value",key).text(value)); 
});

事实上,这就是我想要实现的代码,我希望在选择parent时显示子项

if(count($navlist)){

foreach($navlist as $key => $list){
    echo "<select>";
        foreach($list as $topkey => $toplist){
            echo '<option value="'. $topkey .'">'. $toplist["name"]. '</option>';


                if(count($toplist['children'])){
                    /*foreach($toplist['children'] as $subkey => $subname){
                        echo "\n<li class='subcat'>";
                        echo anchor("welcome/cat/$subkey", $subname);
                        echo "</li>";
            }       */
        }
    }   
}

echo "</select>";
}

?>

谢谢

我就是这样做的,很容易做到

下载jQuery,+ 将jQuery+jQuery.chained.js插入CI视图 创建用于从数据库生成选择的函数 调用函数 就我的表格结构而言,我知道在一个表格中可以轻松完成

类别

子类别

现在,我只需加载所有活动类别/子类别,并为它们创建s

请注意,我使用的是twitter bootstrap 2,因此有一些额外的HTML

请注意,我正在使用自己的my_Controller文件扩展CI_Controller,因此我可以通过执行以下操作将传递给view的全局$data[]设置为exted CI_Controller的$this->data['key']

请注意,它具有内置的重新填充功能,因此每当您传递有效或无效的category_id&&| | |$subcategory_id时,如果参数正确,它会在数据库中查找,如果参数正确,则会重新填充category/subcategory

public function category_chain($category_id = FALSE, $subcategory_id = FALSE) { 
    $this->load->model('general_model');

    $repopulate['category'] = ''; 
    $repopulate['subcategory'] = ''; 

    if (($category_id !== FALSE && $subcategory_id !== FALSE) || ($category_id !== "FALSE" && $subcategory_id !== "FALSE")) { 

        if ($this->general_model->_isInDBWhere('subcategory', array('id' => $subcategory_id, 'category_id' => $category_id))) { 

            $repopulate['category'] = $category_id; 
            $repopulate['subcategory'] = $subcategory_id; 

        } 

    } 

    if (($category_id !== FALSE && $subcategory_id === FALSE) || ($category_id !== "FALSE" && $subcategory_id === "FALSE")) { 

        if ($this->general_model->_isInDB('category', 'id', $category_id)) { 

            $repopulate['category'] = $category_id; 
            $repopulate['subcategory'] = ''; 

        } 

    } 

    $categories = $this->general_model->_getAllWhere('category', 'active', '1'); 
    $subcategories = $this->general_model->_getAllWhere('subcategory', 'active', '1'); 

    $return = "<div class=\"control-group\"> 
                <label class=\"control-label\">.category </label> 
                    <div class=\"controls\"> 
                    <div class=\"input-prepend\"> 
                            <span class=\"add-on\"><i class=\"icon-th-large\"></i></span>"; 
    $return .= "<select name=\"category_id\" id=\"category\">"; 
    $return .= "<option value=\"\">--</option>"; 

    foreach ($categories as $category) { 

        $return .= "<option value=\"".$category->id."\"".(($repopulate['category'] == $category->id) ? " selected": "").">".$category->name."</option>"; 

    } 

    $return .= "</select>"; 
    $return .= "</div></div></div>"; 


    $return .= "<div class=\"control-group\"> 
                <label class=\"control-label\">.subcategory </label> 
                    <div class=\"controls\"> 
                    <div class=\"input-prepend\"> 
                            <span class=\"add-on\"><i class=\"icon-th\"></i></span>"; 
    $return .= "<select name=\"subcategory_id\" id=\"subcategory\">"; 
    $return .= "<option value=\"\">--</option>"; 

    foreach ($subcategories as $subcategory) { 

        $return .= "<option value=\"".$subcategory->id."\" class=\"".$subcategory->category_id."\"".(($repopulate['subcategory'] == $subcategory->id) ? " selected": "").">".$subcategory->name."</option>"; 

    } 

    $return .= "</select>"; 
    $return .= "</div></div></div>"; 

    $this->data['category_chain'] = $return; 

}
最后一步是在我们需要时调用函数。 在所需的控制器中,只需调用$this->category\u chain,在视图中会有一个变量available$category\u chain,就像


就这样

当你说“子类别”时,你是指页面上的另一个选择?不只是子类别
CREATE TABLE IF NOT EXISTS `subcategory` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category_id` int(11) NOT NULL,
  `name` varchar(64) NOT NULL,
  `active` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `category_id` (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;

INSERT INTO `subcategory` (`id`, `category_id`, `name`, `active`) VALUES
(2, 3, 'Mathematics', 1),
(3, 3, 'Physics', 1),
(4, 3, 'Medicine', 1),
(5, 4, '21st Century', 1),
(6, 4, '18-20th Century', 1),
(7, 4, '15-17th Century', 1),
(8, 4, 'Before 15th Century', 1);

ALTER TABLE `subcategory`
  ADD CONSTRAINT `subcategory_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`);
public function category_chain($category_id = FALSE, $subcategory_id = FALSE) { 
    $this->load->model('general_model');

    $repopulate['category'] = ''; 
    $repopulate['subcategory'] = ''; 

    if (($category_id !== FALSE && $subcategory_id !== FALSE) || ($category_id !== "FALSE" && $subcategory_id !== "FALSE")) { 

        if ($this->general_model->_isInDBWhere('subcategory', array('id' => $subcategory_id, 'category_id' => $category_id))) { 

            $repopulate['category'] = $category_id; 
            $repopulate['subcategory'] = $subcategory_id; 

        } 

    } 

    if (($category_id !== FALSE && $subcategory_id === FALSE) || ($category_id !== "FALSE" && $subcategory_id === "FALSE")) { 

        if ($this->general_model->_isInDB('category', 'id', $category_id)) { 

            $repopulate['category'] = $category_id; 
            $repopulate['subcategory'] = ''; 

        } 

    } 

    $categories = $this->general_model->_getAllWhere('category', 'active', '1'); 
    $subcategories = $this->general_model->_getAllWhere('subcategory', 'active', '1'); 

    $return = "<div class=\"control-group\"> 
                <label class=\"control-label\">.category </label> 
                    <div class=\"controls\"> 
                    <div class=\"input-prepend\"> 
                            <span class=\"add-on\"><i class=\"icon-th-large\"></i></span>"; 
    $return .= "<select name=\"category_id\" id=\"category\">"; 
    $return .= "<option value=\"\">--</option>"; 

    foreach ($categories as $category) { 

        $return .= "<option value=\"".$category->id."\"".(($repopulate['category'] == $category->id) ? " selected": "").">".$category->name."</option>"; 

    } 

    $return .= "</select>"; 
    $return .= "</div></div></div>"; 


    $return .= "<div class=\"control-group\"> 
                <label class=\"control-label\">.subcategory </label> 
                    <div class=\"controls\"> 
                    <div class=\"input-prepend\"> 
                            <span class=\"add-on\"><i class=\"icon-th\"></i></span>"; 
    $return .= "<select name=\"subcategory_id\" id=\"subcategory\">"; 
    $return .= "<option value=\"\">--</option>"; 

    foreach ($subcategories as $subcategory) { 

        $return .= "<option value=\"".$subcategory->id."\" class=\"".$subcategory->category_id."\"".(($repopulate['subcategory'] == $subcategory->id) ? " selected": "").">".$subcategory->name."</option>"; 

    } 

    $return .= "</select>"; 
    $return .= "</div></div></div>"; 

    $this->data['category_chain'] = $return; 

}
function _getAllWhere($table, $where, $value) { 
        $q = $this->db->get_where($table, array($where => $value)); 
        return ($q->num_rows() > 0) ? $q->result() : FALSE; 
}