Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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
Php codeigniter将数据从视图传递到模型_Php_Codeigniter_Parameter Passing - Fatal编程技术网

Php codeigniter将数据从视图传递到模型

Php codeigniter将数据从视图传递到模型,php,codeigniter,parameter-passing,Php,Codeigniter,Parameter Passing,我需要显示类别和子类别,我的模型现在是show static$id,正如您所看到的,我试图编写$id=4(仅用于测试),所以它是唯一的show subcategory,其中每个类别中$id=4 public function get_subkriterias($id = 4) { $this->db->select('kriterias.nama as kriterias_nama, kriterias.id, sub_kriterias.id, sub_krit

我需要显示类别和子类别,我的模型现在是show static$id,正如您所看到的,我试图编写$id=4(仅用于测试),所以它是唯一的show subcategory,其中每个类别中$id=4

  public function get_subkriterias($id = 4)
    {
    $this->db->select('kriterias.nama as kriterias_nama, kriterias.id, sub_kriterias.id, sub_kriterias.nama, sub_kriterias.nilai');
    $this->db->from('kriterias');
    $this->db->join('sub_kriterias', 'kriterias.id = sub_kriterias.kriteria_id', 'LEFT');
    $this->db->where('kriteria_id', $id);
    $this->db->order_by('kriterias.id');
    $query = $this->db->get();
    return $query->result_array();
}
这是我的 控制器

    public function index()
    {
    $data['kriterias'] = $this->subkriterias_model->tampil();
    $data['sub_kriterias'] = $this->subkriterias_model->get_subkriterias();
    $this->load->view('sub_kriterias/tampil', $data);
    }
视图:


如何将数据从view或anywhere传递到$id,以便此模型可以动态检索$id,并最终在每个类别中只显示正确的子类别

先谢谢你


视图调用模型的函数。尝试以下方法:

  • 视图中的负载模型使用

    $this->load->model('model_name')

  • 使用所需参数调用模型的函数

    $this->model\u name->method\u name($parameters)


  • 有几种方法可以做到这一点,下面是一个使用ajax的非常有限的示例

    在控制器中:

    public function index()
    {
        /**getting intial items only**/
        $data['kriterias'] = $this->subkriterias_model->tampil();
        $this->load->view('sub_kriterias/tampil', $data);
    
    }
    
    public function get_category()
    {
        /** id posted via ajax once user clicks category**/
        $id = $this->input->post('id');
        $sub_kriterias = $this->subkriterias_model->get_subkriterias($id);
        echo json_encode($sub_kriterias);
        exit();
    }         
    
    在视图中,我们将有一个项目列表:

     <select id= "categorey_select">
        <? foreach($kriterias as $item):?>
            <option name="selected_cat" value="<?=$item['id'];?>"><?=$item['nama'];?></option>
        <?endforeach;?>
     </select>
    
    <!-- notice this table is empty for now-->
    <table id="category_results">
    </table>
    
    
    
    在这里,我们将使用jquery事件侦听器在单击一个类别后发送ajax请求(您可以在视图中添加该类别,也可以加载包含该类别的js脚本):

    
    $(“#目录”).change(函数(){
    var id=$(this.val();
    $.ajax({
    url:“/path/to_controller/get_category”,
    方法:“张贴”,
    数据:{id:id},
    成功:功能(resp){
    /**使用控制台/web工具查看返回对象的结构**/
    /**在这里,您将使用结果填充空表**/
    /**每次类别更改时使用empty重置表**/
    $(“分类结果”).empty().append(“…”)
    }
    })
    })
    
    您需要将数据传递给控制器,然后再传递给您的模型。请同时发布控制器和视图中包含input@Kisaragi现在已经编辑了。您应该更精确一点,是否希望表格仅在选定某个类别时填充?我无法在您提出的问题和您添加的视图片段之间建立关联
     <select id= "categorey_select">
        <? foreach($kriterias as $item):?>
            <option name="selected_cat" value="<?=$item['id'];?>"><?=$item['nama'];?></option>
        <?endforeach;?>
     </select>
    
    <!-- notice this table is empty for now-->
    <table id="category_results">
    </table>
    
    <script>
        $("#categoery").change(function(){
            var id = $(this).val();
    
            $.ajax({
               url: '/path/to_controller/get_category',
               method: "POST",
               data: {id: id},
    
               success: function(resp){
                  /** use console/web tools to see the returned object's structure**/
                  /** here you would populate the empty table with the results **/                 
                 /** using empty to reset the table each time category changes**/
                    $("category_results").empty().append("<tr>...")
               }
             })
        })
    </script>