2017-04-10 78 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

相關問題