如何在单击时将切换按钮发布到数据库

时间:2015-03-11 21:08:50

标签: javascript php jquery ajax codeigniter

我正在尝试弄清楚如何在按下时将切换开关按钮发布到数据库,以便它可以更新信息: 。就像一个提交按钮。这是我的codeigniter应用程序的视图。

<script type="text/javascript">

jQuery(document).ready(function() {

    jQuery('.switch_options').each(function() {

        //This object
        var obj = jQuery(this);

        var enb = obj.children('.switch_enable'); //cache first element, this is equal to ON
        var dsb = obj.children('.switch_disable'); //cache first element, this is equal to OFF
        var input = obj.children('input'); //cache the element where we must set the value
        var input_val = obj.children('input').val(); //cache the element where we must set the value

        /* Check selected */
        if( 'NO' == input_val ){
            dsb.addClass('selected');
        }
        else if( 'Yes' == input_val ){
            enb.addClass('selected');
        }

        //Action on user's click(ON)
        enb.on('click', function(){
            $(dsb).removeClass('selected'); //remove "selected" from other elements in this object class(OFF)
            $(this).addClass('selected'); //add "selected" to the element which was just clicked in this object class(ON) 
            $(input).val('Yes').change(); //Finally change the value to 1
        });

        //Action on user's click(OFF)
        dsb.on('click', function(){
            $(enb).removeClass('selected'); //remove "selected" from other elements in this object class(ON)
            $(this).addClass('selected'); //add "selected" to the element which was just clicked in this object class(OFF) 
            $(input).val('NO').change(); // //Finally change the value to 0
        });

    });

});


</script>

切换开关html代码

<div class="switch_options">
 <label class="col-sm-5 control-label">Complete: </label>
    <span class="switch_enable"> Yes </span>
    <span class="switch_disable"> NO </span>
    <input type="hidden" class="default"value="<?php echo $e->Complete;?>">
    <input type="hidden" name="Complete" class="switch_val" value=""/>

</div>

控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Callin extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->model('callin_model');

        }   

    //Shows the dashboard
    public function index()
    {
         if($this->session->userdata('logged_admin'))
        {      
        $this->load->view('templates/admin_header');
        $this->load->view('insert_callins_view');


       }else{
           redirect('admin_authentication/admin_login_show');

        }

    }
    //Insert the callin 
    public function  insert_callin()
    { 
 if($this->session->userdata('logged_admin'))
        {     

    $data=array('Date_Scheduled'=>$this->input->post('Date_Scheduled'),
            'Employee_Name'=>$this->input->post('Employee_Name'),
            'Employee_Number'=>$this->input->post('Employee_Number'),
            'Time_Reported'=>$this->input->post('Time_Reported'),
            'Reason'=>$this->input->post('Reason'),
            'Scheduled_Area'=>$this->input->post('Scheduled_Area'),
            'Contact'=>$this->input->post('Contact'),
            'Approval'=>$this->input->post('Approval'),
            'Complete'=>$this->input->post('Complete'),
            'status'=>1);

        //print_r($data);

            $result=$this->callin_model->insert_callin($data); 
            if($result > 0) 
        {
            $this->session->set_flashdata('msg',"Callin Record Added Successfully");
            redirect('callin');

        }
        else
        {

            $this->session->set_flashdata('msg1',"Callin Record Added Failed");
            redirect('callin');


        }

         }else{
           redirect('admin_authentication/admin_login_show');

        }

    }
    //List of callins 
        public function list_callins()
    {


         if($this->session->userdata('logged_admin'))
        {  


            $data['callin'] =$this->callin_model->get_callin();

            $this->load->view('templates/admin_header');
            $this->load->view('admin_callins_view',$data);

               }else{
           redirect('admin_authentication/admin_login_show');

        }


    }
    //List of callins
        public function viewlist_callins()
    {

           if($this->session->userdata('logged_in'))
        {  

            $data['callin']=$this->callin_model->get_callin();
            $this->load->view('templates/header');
            $this->load->view('user_callins_view',$data);


               }else{
           redirect('user_authentication/user_login_show');

        }
    }

    public function delete_callin()
    {
        $id=$this->input->post('id');
        $data=array('status'=>0);
        $result=$this->callin_model->delete_callin($id,$data);
        if($result==true)
        {
            $this->session->set_flashdata('msg1',"Deleted Successfully");
            redirect('callin/list_callins');

        }
        else
        {

            $this->session->set_flashdata('msg1',"callin Record Deletion Failed");
            redirect('callin/list_callins');


        }

    }



    public function edit_callin()
    {

        $id=$this->uri->segment(3);
        $data['callin']=$this->callin_model->edit_callin($id);
        $this->load->view('templates/admin_header',$data);
        $this->load->view('edit_callin');


    }
    public function  update_callin()
    {


        $id=$this->input->post('id');

        $data=array('Date_Scheduled'=>$this->input->post('Date_Scheduled'),
            'Employee_Name'=>$this->input->post('Employee_Name'),
            'Employee_Number'=>$this->input->post('Employee_Number'),
            'Time_Reported'=>$this->input->post('Time_Reported'),
            'Reason'=>$this->input->post('Reason'),
            'Scheduled_Area'=>$this->input->post('Scheduled_Area'),
            'Contact'=>$this->input->post('Contact'),
            'Approval'=>$this->input->post('Approval'),
            'Complete'=>$this->input->post('Complete'));
            //print_r($data);   
        $result=$this->callin_model->update_callin($data,$id);
        if($result)
        {
            $this->session->set_flashdata('msg',"Callin Record Updated Successfully");
            redirect('callin/list_callins');



        }
        else
        {

            $this->session->set_flashdata('msg1',"No changes Made in Callin Record");
            redirect('callin/list_callins');


        }
    }

}
?>

模型

<?php

class Callin_Model extends CI_Model 
{

    public function insert_callin($data)
    {
    $this->db->insert('callin_list',$data); 
return $this->db->insert_id(); 
    }
    public function get_callin()
    {

        $this->db->select('*');
        $this->db->from('callin_list');
        $this->db->where('status',1);
        $this->db->order_by("id", "desc");
        $this->db->order_by("Scheduled_Area", "desc");
        $this->db->order_by("Reason", "desc");

        $query =$this->db->get();
        return $query->result();


    } 
    public function delete_callin($id,$data)
    {
        $this->db->where('id',$id);
        $this->db->update('callin_list',$data);
            return print_r($data);


    }
    public function edit_callin($id)
    {
        $this->db->select('*');
        $this->db->from('callin_list');
        $this->db->where('id',$id);
        $this->db->where('status',1);
        $query =$this->db->get();
        return $query->result();

    }
    public function update_callin($data,$id)
    {
        $this->db->where('id',$id);
        $this->db->update('callin_list',$data);
        return print_r($data);

    }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

<div class="switch_options" for='<?php echo $Employee_Number;?>'>
 <label class="col-sm-5 control-label">Complete: </label>
    <span val='true' class="switch switch_enable"> Yes </span>
    <span val='false' class="switch switch_disable"> NO </span>
</div>
<script>
$('.switch').click(function(){
  var id = $(this).parent().attr('for');
  var complete = $(this).attr('val');
  var that = this;
   $.ajax({
        url: "<?php echo base_url();?>edit_complete",
        type: "post",
        data: 'complete='+complete+'id='+id,
        success: function(data){
            if (data.indexOf("Edit complete OK") >= 0){
              $(that).addClass('selected');
              $(that).siblings('.switch').removeClass('selected');
            }
        }
    });
});
</script>

您将需要一个控制器来处理您的数据库查询。这是:

 public function  edit_complete() { 
   if($this->session->userdata('logged_admin')){ 
      $complete_value = $this->input->post('complete');
      $Employee_Number = $this->input->post('id');
      if($this->callin_model->edit_complete($Employee_Number, $complete_value)){
        echo 'Edit complete OK';
      }
   }
 }

在你的模特里面:

function edit_complete($Employee_Number,$complete_value){
  $data = array('Complete' => $complete_value);
  $this->db->where('Employee_Number', $Employee_Number);
  $this->db->update('mytable_name', $data);
  if($this->db->affected_rows()==1)return TRUE;
  return FALSE;
}