如何获取下拉列表中被选中人员的详细信息?

时间:2015-12-23 08:31:26

标签: php codeigniter

我正在构建CI应用程序。这里我显示了员工的登录和注销。现在我有一个下拉列表,我从数据库和下面获取所有用户,我有一个表格,显示所有用户及其相关的登录注销。现在我想做一些事情,比如当我从下拉菜单中选择一个用户时,我只能看到他的信息,而不是所有其他信息。

控制器:

public function index()
{

    $this->data['attendances'] = $this->attendance_m->join_data();

    $this->data['attendance_dropdown'] = $this->attendance_m->get_emp_list();

    $this->data['subview'] = 'admin/attendance/index';
    $this->load->view('admin/_layout_main', $this->data);
}

模特:

function get_emp_list() {
  $q = $this->db->select('name')
  ->from('users')
  ->get();
  return $q->result_array();
}    

以下是我获取用户的代码:

            <script type="text/javascript" src="<?php  echo site_url('js/bootstrap.min.js');?>"></script>    
        <h2>Upload CSV To Import Users</h2>
        <!-- in the action you need to place /controller/function in our case @Attendance, @upload -->
        <form method="post" action="<?php echo site_url('admin/attendance/upload');?>" enctype="multipart/form-data">
           <input type="file" name="file" id="file">
           <br>
                <input type="submit" name="submit" value="UPLOAD" class="btn btn-primary">
        </form>


        <div class="row">
            <div class="col-lg-12">


        <div class="row">

            <div class="col-md-3">

              <div class="form-group">
              <h1><label for="sel1">Select list:</label></h1>
                <select name="attendance-list" id="attendance-list" class="form-control" >
                <?php foreach($attendance_dropdown as $value) { ?>
                <option value="<?php echo $value['name'];?>"><?php echo $value['name']; ?>  </option>
                <?php } ?>
                </select>
            </div>

                <h1 class="page-header">Attendance Details</h1>

            </div>
                    <!-- /.col-lg-12 -->
        </div>
                <!-- /.row -->



        <div class="row">
            <div class="col-lg-12">
                <div class="panel panel-primary">
                    <div class="panel-heading">
                     All Calls Records
                    </div>
                    <!-- /.panel-heading -->
                    <div class="panel-body">
                        <div class="dataTable_wrapper">
                            <table class="table table-striped table-bordered table-hover" id="dataTables-example">


                                <thead>
                                    <tr>
                                        <th>Emp_ID</th>
                                         <th>Name</th>
                                        <th>Date</th>
                                        <th>Entry</th>



                                    </tr>
                                </thead>



                                <tbody>

                                <?php if(count($attendances)): foreach($attendances as $attendance): ?>


                                    <tr class="odd gradeX">
                                       <td><?php echo trim($attendance->emp_id,'">');  ?></td>  
                                        <td><?php echo trim($attendance->name.$attendance->last_name,'">');  ?></td>  
                                       <td><?php echo trim($attendance->date_data,'">');  ?></td>
                                       <td><?php  trim($attendance->entry,'">');  ?>  <?php if($attendance->entry >100)
                                        {
                                            echo "Logged In";
                                        }
                                        else
                                        {
                                            echo"Logged Out";
                                        }?>

                                    </tr>

                                <?php endforeach; ?>

                                <?php else: ?>

                                    <tr>
                                        <td colspan="3">We could not find any Data.</td>
                                    </tr>

                                <?php endif; ?> 



                                </tbody>
                            </table>
                        </div>
                        <!-- /.table-responsive -->

                    </div>
                    <!-- /.panel-body -->
                </div>
                <!-- /.panel -->
            </div>
            <!-- /.col-lg-12 -->
        </div>
        <!-- /.row -->

        <!-- /.row -->







<!-- jQuery -->
<script src="../bower_components/jquery/dist/jquery.min.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script>

<!-- Metis Menu Plugin JavaScript -->
<script src="../bower_components/metisMenu/dist/metisMenu.min.js"></script>

<!-- DataTables JavaScript -->
<script src="../bower_components/datatables/media/js/jquery.dataTables.min.js"></script>
<script src="../bower_components/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.min.js"></script>

<!-- Custom Theme JavaScript -->
<script src="../dist/js/sb-admin-2.js"></script>

<!-- Page-Level Demo Scripts - Tables - Use for reference -->



<script>
$(document).ready(function() {
    $('#dataTables-example').DataTable({
            responsive: true
    });
});
</script>

2 个答案:

答案 0 :(得分:1)

以下是如何使用帖子在codeigniter中获取数据:

控制器

function catchPost(){

    $this->form_validation->set_rules("nametage", "something", "required");
    if($this->form_validation->run() == TRUE){//Formvalidation worked
        $this->load->model("model_name");
        $data['userInfo'] = $this->model_name->function();

        $this->load->view("view", $data);
    }else{
        redirect("prevUrl", "refresh");
    }
}

型号:

 function getData(){//No parameters because we work directly with the post. You should filter the post before you actually use it.
     $query = $this->db-select("*")
              ->from("users")
              ->where("username", $this->input->post("username"))
              ->get()
              ->result_array();
    return $query
 }

这是抓取特定数据的一般方法。

答案 1 :(得分:1)

如果值不为空,则必须为给定的下拉列表绑定更改事件,调用ajax并获取该特定用户的信息

在你js:

<script>
 site_url="http://localhost/ci_root/index.php/";
 $('#attendance-list').on('change', function () {
   var select_emp_name=$(this).val();
   if(select_emp_name!=""){
      var params={};
      params["name"]= select_emp_name;
      $.ajax({type: 'POST', url: site_url + 'employee/getUserInfo', data: params,success: function (response) {
                            //write on response logic/set employee details 
                        var user_data=JSON.parse(response);
                        }, async: true});
   }
 })
</script>
控制器功能

中的

public function getUserInfo()
{
    $name=$this->input->post("name",true);
    $data = $this->attendance_m->get_emp_data($name);
    echo json_encode( $data);
    exit;
}
模型函数中的

function get_emp_data($name) {
  $q = $this->db->select('*')//required fields
  ->from('users')
  ->where('name',$name) // considering name is unique field
  ->get();
  return $q->result_array();
}  

建议:更好的做法是为下拉值发送用户ID或唯一字段,而不是像user_id =&gt; 1,name =&gt; sanjay这样的名称 我们可以在下拉列表中将user_id设置为值,并将name命名为选项

的标签

它看起来像

<?php foreach($attendance_dropdown as $value) { ?>
                <option value="<?php echo $value['user_id'];?>"><?php echo $value['name']; ?>  </option>
                <?php } ?>

根据你的where子句也改变

如果您需要更多支持,请告诉我

这是您的Scipt显示代码

<script>
    site_url = "http://127.0.01/project/admin/";
    $('#attendance-list').on('change', function() {
        var select_emp_id = $(this).val();
        if (select_emp_id != "") {
            var params = {};
            params["id"] = select_emp_id;
            $.ajax({type: 'POST', url: site_url + 'attendance/getUserInfo', data: params, success: function(response) {
//write on response logic/set employee details 
                    var user_data = JSON.parse(response);
                    var row = '<tr class="odd gradeX"><td>' + user_data.emp_id + '</td><td>' + user_data.name + ' ' + user_data.last_name'</td><td>' + user_data.date_data + '</td><td>' + user_data.entry + ' ' + (user_data.entry > 100?"Logged In":"Logged Out") + '</td> </tr>';
                            $("#dataTables-example tbody").find('tr').remove();
                    $("#dataTables-example tbody").append(row);
                }, async: true});
        }
    });
</script>