繁体   English   中英

如何获取下拉菜单中所选人员的详细信息?

[英]How do i get the details of person who is selected in drop down?

我正在构建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>

这是通过post在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
 }

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

如果值不为空,则必须绑定给定下拉列表的change事件,以调用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 => 1,name => sanjay这样的名称,我们可以将user_id设置为下拉列表的值,并将name设置为option的标签

它看起来像

<?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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM