基于带有 codeigniter 的单表数据值的依赖下拉列表

杜希

我使用 Codeigniter 通过使用单个表的值来开发依赖下拉列表,该表将允许用户根据单击的名称单击客户端名称。下一个下拉列表将显示与该客户相关的项目。下一个下拉列表将显示与所选项目相关的任务。

但是由于错误,只能从数据库中获取客户端名称。没有为项目和任务提取值。有什么帮助吗?控制器

 <?php
    // security first always....
    (defined('BASEPATH') or exit('No direct script access allowed'));
    /**
     * Class Controller
     *
     * Class Dropdown Controller to handle login & logout
     */
    class Dropdown extends CI_controller
    {
        /**
         * Class Constructor
         */
        public function __construct()
        {
            // execute parent class constructor
            parent::__construct();
            // load model
            $this->load->model('Dropdown_model');
        }

        /**
         * Default method to execute if method name missing
         * @return [type] [description]
         */
        public function index()
        {
            $array_data = array();
            // only on Ajax Request
            if ($this->input->is_ajax_request()) {
                // if request for projects
                if ($this->input->post('action') && $this->input->post('action') == 'project') {
                    // get client name
                    $client     = $this->input->post('client', true);
                    // get project data by client name
                    $array_data = $this->Dropdown_model->get_dropdown_data(trim($client), 'project');
                    // AjaxPOST JSON response
                    echo json_encode($array_data);die();
                }
                // if request for task
                if ($this->input->post('action') && $this->input->post('action') == 'task') {
                    // get project name
                    $project    = $this->input->post('project', true);
                    // get task data by project
                    $array_data = $this->Dropdown_model->get_dropdown_data(trim($project), 'task');
                    // AjaxPOST JSON response
                    echo json_encode($array_data);die();
                }
            }
            // else get all client data
            $array_data = $this->Dropdown_model->get_dropdown_data(null, null);
            // send to view
            $this->load->view('dropdown', ['data' => $array_data]);
        }
    }

模型

<?php
// No direct script execution
defined('BASEPATH') or exit('No direct script access allowed');
/**
 * Class Dropdown_model to handle all related information from MySQL
 */
class Dropdown_model extends CI_Model
{
    /**
     * MySQL table which contains all data about users
     * @var string
     */
    protected $table = 'task';
    /**
     * Returns, User First Name by Email ID
     * @param  [type] $email_addres   [description]
     * @return [type] [description]
     */
    public function get_dropdown_data($where_data = null, $type = null)
    {
        $query = '';

        // clients only
        if (is_null($type) && is_null($where_data)) {
            // desire column from table
            $this->db->select('client_name');
            // only unique clients
            $this->db->distinct('client_name');
            // mysql table
            $query = $this->db->get($this->table);
        }

        // projects by client
        elseif ($type == 'project' && !is_null($where_data)) {
            // desire column from table
            $this->db->select('project_name');
            // where clause
            $this->db->where('client_name', $where_data);
            // mysql table
            $query = $this->db->get($this->table);
        }

        // task by project
        elseif ($type == 'task' && !is_null($where_data)) {
            // desire column from table
            $this->db->select('task');
            // where clause
            $this->db->where('project_name', $where_data);
            // mysql table
            $query = $this->db->get($this->table);
        }

        // if record exist
        if ($query->num_rows() > 0) {
            // return all data as array
            return $query->result_array();
        } else {
            // error
            return false;
        }
    }
}

看法

<!DOCTYPE html>
<html>
<head>
    <title>CodeIgniter: Dependent dropdown list by using single table value</title>
    <!-- load bootstrap css -->
    <link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <!-- load jquery library -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- load bootstrap js -->
    <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container">
        <div class="form-group">
            <label for="name">Client</label>
            <select class="form-control" id="clients" name="clients">
                <option value="0">--Select Clients--</option>
                <?php if (isset($data)):?>
                    <?php foreach ($data as $key => $value): ?>
                        <option value="<?=$value['client_name']?>"><?=$value['client_name']?></option>
                    <?php endforeach ?>
                <?php endif ?>
            </select>
        </div>
        <div class="form-group">
            <label for="name">Projects</label>
            <select class="form-control" id="projects" name="projects">
                <option value="0">--Select Projects--</option>
            </select>
        </div>
        <div class="form-group">
            <label for="name">Tasks</label>
            <select class="form-control" id="tasks" name="tasks">
                <option value="0">--Select Tasks--</option>
            </select>
        </div>
        <div class="form-group">
            <input type="button" class="btn btn-primary" value="Submit">
        </div>
    </div>
    <script type="text/javascript">
        $(document).ready(function(){
            // client select box
            var $client     = $('select#clients');
            // project select box
            var $projects   = $('select#projects');
            // task select box
            var $tasks      = $('select#tasks');
            // on change client name, get projects
            $client.on('change', function () {
                // get selected client name
                var client = $(this).find('option:selected').val();
                // post data with CSRF token
                var data = {
                    action:'project',
                    client: client,
                    "<?=$this->security->get_csrf_token_name()?>" : "<?=$this->security->get_csrf_hash()?>"
                };
                // AjaxPOST to get projects
                $.post('./dropdown', data, function(json) {
                    projects_data = '<option value="0">--Select Projects--</option>';
                    $.each(json, function(index, obj){
                        projects_data += '<option value="'+obj.project_name+'">'+obj.project_name+'</option>';
                    });
                    // append all projects in project dropdown
                    $projects.html(projects_data);
                }, 'JSON');
            });
            // on change project, get task
            $projects.on('change', function () {
                // get selected project name
                var project = $(this).find('option:selected').val();
                // AjaxPOSt wit CSRF
                var data = {
                    action:'task',
                    project: project,
                    "<?=$this->security->get_csrf_token_name()?>" : "<?=$this->security->get_csrf_hash()?>"
                };
                $.post('./dropdown', data, function(json) {
                    task_data = '<option value="0">--Select Task--</option>';
                    $.each(json, function(index, obj){
                        task_data += '<option value="'+obj.task+'">'+obj.task+'</option>';
                    });
                    // append all task data in Task dropdown
                    $tasks.html(task_data);
                }, 'JSON');
            });
        });
    </script>
</body>
</html>

在此处输入图片说明

杜希

$.post('./dropdown', data, function(json) 应该是 $.post('.', data, function(json)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有 AJAX 动态依赖下拉列表的 Codeigniter

来自分类Dev

Codeigniter-带有jquery和ajax post的依赖下拉列表

来自分类Dev

CodeIgniter和Google图表-基于mysql值的下拉列表

来自分类Dev

CodeIgniter和Google图表-基于mysql值的下拉列表

来自分类Dev

Codeigniter从带有CSRF的ajax获取数据

来自分类Dev

基于带有附加自定义值的表的下拉列表,Rails

来自分类Dev

CodeIgniter-来自数据库的动态依赖下拉列表

来自分类Dev

角度js中带有json数据的依赖下拉列表

来自分类Dev

在codeigniter中查询带有外键的表

来自分类Dev

数据不会在带有Codeigniter的视图中显示

来自分类Dev

在Codeigniter上获取带有条件的会话数据

来自分类Dev

从数据库返回带有Ajax的多行-Codeigniter

来自分类Dev

数据不会在带有Codeigniter的视图中显示

来自分类Dev

Codeigniter中缺少带有上传图像的参数编辑数据

来自分类Dev

带有数据库选择的 CodeIgniter:

来自分类Dev

带有Geoplugin的基于国家的自动下拉列表

来自分类Dev

从数据库不起作用的Codeigniter更改带有Ajax下拉菜单的文本

来自分类Dev

从数据库不起作用的Codeigniter更改带有Ajax下拉菜单的文本

来自分类Dev

如何在Codeigniter中显示带有数据库中某些选定值的复选框列表

来自分类Dev

Codeigniter将2个表数据与带有ID值的新列连接起来

来自分类Dev

来自具有相同值的数据库的 PHP Codeigniter 下拉值

来自分类Dev

没有在 Codeigniter 中获取我想要的下拉列表中的数据

来自分类Dev

带有依赖项的 Bootstrap 下拉列表

来自分类Dev

带有codeigniter的angularjs局部

来自分类Dev

带有tinymce的Codeigniter CMS

来自分类Dev

带有Codeigniter的移动应用

来自分类Dev

工作表-基于项目值的下拉列表

来自分类Dev

jQuery CODEIGNITER的先前依赖的依赖下拉列表不会消失

来自分类Dev

来自多个表的CodeIgniter下拉列表

Related 相关文章

  1. 1

    带有 AJAX 动态依赖下拉列表的 Codeigniter

  2. 2

    Codeigniter-带有jquery和ajax post的依赖下拉列表

  3. 3

    CodeIgniter和Google图表-基于mysql值的下拉列表

  4. 4

    CodeIgniter和Google图表-基于mysql值的下拉列表

  5. 5

    Codeigniter从带有CSRF的ajax获取数据

  6. 6

    基于带有附加自定义值的表的下拉列表,Rails

  7. 7

    CodeIgniter-来自数据库的动态依赖下拉列表

  8. 8

    角度js中带有json数据的依赖下拉列表

  9. 9

    在codeigniter中查询带有外键的表

  10. 10

    数据不会在带有Codeigniter的视图中显示

  11. 11

    在Codeigniter上获取带有条件的会话数据

  12. 12

    从数据库返回带有Ajax的多行-Codeigniter

  13. 13

    数据不会在带有Codeigniter的视图中显示

  14. 14

    Codeigniter中缺少带有上传图像的参数编辑数据

  15. 15

    带有数据库选择的 CodeIgniter:

  16. 16

    带有Geoplugin的基于国家的自动下拉列表

  17. 17

    从数据库不起作用的Codeigniter更改带有Ajax下拉菜单的文本

  18. 18

    从数据库不起作用的Codeigniter更改带有Ajax下拉菜单的文本

  19. 19

    如何在Codeigniter中显示带有数据库中某些选定值的复选框列表

  20. 20

    Codeigniter将2个表数据与带有ID值的新列连接起来

  21. 21

    来自具有相同值的数据库的 PHP Codeigniter 下拉值

  22. 22

    没有在 Codeigniter 中获取我想要的下拉列表中的数据

  23. 23

    带有依赖项的 Bootstrap 下拉列表

  24. 24

    带有codeigniter的angularjs局部

  25. 25

    带有tinymce的Codeigniter CMS

  26. 26

    带有Codeigniter的移动应用

  27. 27

    工作表-基于项目值的下拉列表

  28. 28

    jQuery CODEIGNITER的先前依赖的依赖下拉列表不会消失

  29. 29

    来自多个表的CodeIgniter下拉列表

热门标签

归档