2017-04-10 106 views
1

我正在创建一个评级系统,在该评级系统中,用户对任何公司进行评级时,将评级与v_id表一起评级。 (v_id是公司ID),Codeigniter:如何使用ajax将最后一个uri段插入到数据库中

这是我的网址中,我想为...

  • www.ABC.com/controller/function/company_id

这里company_id正在从数据库中获取。我想将公司评级存入费率表。当用户点击明星时。

控制器

function visa_company_profile($v_id) { 

     $data['total_ratings'] = $this->Visa_mdl->total_ratings($v_id); 
     $data['total_average'] = $this->Visa_mdl->total_average($v_id); 

     $result = $this->Visa_mdl->get_company_profile($v_id); 
     $data['items_company_profile'] = $result; 

     $this->load->view('include/header'); 
     $this->load->view('hotels/company_profile',$data); 
     $this->load->view('include/footer'); 

    } 

查看 这是ajax的一部分,其中我发送的明星价值到控制器

$(document).ready(function(){ 


var click_val = 0; 

$("#1_star").hover(function(){ 

    $("#1_star").attr("src","<?php echo base_url('assets/rating/star.png'); ?>"); 
    $("#2_star").attr("src","<?php echo base_url('assets/rating/blank_star.png'); ?>"); 
    $('#3_star').attr('src',"<?php echo base_url('assets/rating/blank_star.png'); ?>"); 
    $('#4_star').attr('src',"<?php echo base_url('assets/rating/blank_star.png'); ?>"); 
    $('#5_star').attr('src',"<?php echo base_url('assets/rating/blank_star.png'); ?>"); 
}); 

$("#1_star").click(function(){ 
    click_val = 1; 

    $.ajax({ 
     url: '<?php echo base_url('Account/loggedin');?>', 
     success: function(logged_in) { 
      if (logged_in === "1") { 
       ajaxCall(); 

      }else { 
       $("#l_modal").modal('show'); 
      } 
     } 
    }); 

}); 
function ajaxCall() { 
    $.ajax({ 
     method : 'POST', 
     data: {'click_val':click_val}, 
     url: '<?php echo base_url('Hotels/ratings/');?>', 
     success: function() { 
      location.reload(); 
     } 
    }); 

} 

星控制器要存储速率为数据 在这里,我试图从URL中获取公司ID并将其存储到列(v_ ID)费率表。

function ratings() { 
      date_default_timezone_set('Asia/Kolkata'); 
      $last = $this->uri->total_segments(); 
      $record_num = $this->uri->segment($last); 
      $value = array (
       'rate' => $this->input->post('click_val'), 
       'date' => date('Y-m-d H:i:s'), 
       'v_id' => $record_num 
       ); 
      $this->Visa_mdl->ratings($value); 
     } 

型号

function ratings($value) { 

      $this->db->insert('user_ratings',$value); 
     } 
+0

上面的代码有什么问题? – Shadow

+0

v_id每次都会将0存入费率表@Shadow –

+0

您是否首先检查了uri中的内容?我真的不知道哪里的www.ABC.com/controller/function/company_id URL作为参数或目标发送到服务器端。 – Shadow

回答

4

你可以做到这一点简单地修改你的AJAX功能输入值

function ajaxCall() { 
    $.ajax({ 
     method : 'POST', 
     data: {'click_val':click_val,'company_id':<?php echo $this->uri->segment(3)}, 
     url: '<?php echo base_url('Hotels/ratings/');?>', 
     success: function() { 
      location.reload(); 
     } 
    }); 
} 

同样,你可以赶上公司ID在你的控制器功能酒店/评级。

+0

非常感谢 –

0
function visa_company_profile($v_id) { 

     $data['v_id'] = $v_id; 
     $data['total_ratings'] = $this->Visa_mdl->total_ratings($v_id); 
     $data['total_average'] = $this->Visa_mdl->total_average($v_id); 

     $result = $this->Visa_mdl->get_company_profile($v_id); 
     $data['items_company_profile'] = $result; 

     $this->load->view('include/header'); 
     $this->load->view('hotels/company_profile',$data); 
     $this->load->view('include/footer'); 

} 

如果通过单击链接值,那么AJAX脚本应该是这样的:

function ajaxCall() { 
    var company_id = '<?php echo $v_id; ?>'; 
    $.ajax({ 
     method : 'POST', 
     data: {'click_val':click_val, 'company_id':company_id}, 
     url: '<?php echo base_url('Hotels/ratings/');?>'+click_val+'/'+company_id, 
     success: function() { 
      location.reload(); 
     } 
    }); 

} 

因为你是不是在通过点击价值url所以控制器应该是这样的:

function ratings() { 
    date_default_timezone_set('Asia/Kolkata'); 
    $record_num = $this->input->post('company_id', true); 
    $value = array (
     'rate' => $this->input->post('click_val', true), 
     'date' => date('Y-m-d H:i:s'), 
     'v_id' => $record_num 
     ); 
    $this->Visa_mdl->ratings($value); 
} 

和控制器:

function ratings($record_num = 0, $company_id = 0) { 
    date_default_timezone_set('Asia/Kolkata'); 

    $value = array (
     'rate' => $record_num, 
     'date' => date('Y-m-d H:i:s'), 
     'v_id' => $company_id 
     ); 
    $this->Visa_mdl->ratings($value); 
} 
+0

'click_val'不是公司ID,它是开始的数量,它在请求的主体(post)中传递。 – Shadow

+0

$ record_num = $ this-> input-> post('click_val',true); 'rate'=> $ this-> input-> post('click_val'); 我想知道1变量“click_val”如何携带公司ID和评级值。答案是错误的。 –

+0

@BikramPahi这是一个例子。顺便说一下,我已经更新了答案, – Gaurav

相关问题