Codeigniter购物车无法插入数据

时间:2013-09-04 12:45:11

标签: php database codeigniter session cart

我正在尝试将一些数据添加到codeigniter(HMVC codeigniter)砧板并显示它,我在主推车控制器中使用此方法:

function add_to_cart(){
    $this->load->library('cart');

    // Get data
    $userID = $this->input->post('userID');
    $eventID = $this->input->post('eventID');
    $tickedID = $this->input->post('tickedID');

    // Get ticket data
    $this->load->module('ticket');
    $ticket_query = $this->ticket->get_where($tickedID);

    //echo $this->session->all_userdata();

    foreach($ticket_query->result() as $ticket_data){
        $ticketPrice = $ticket_data->price;
        $ticketCategory = $ticket_data->category;
    }

    //echo 'tickedID: '.$tickedID.' price: '.$ticketPrice.' category: '.$ticketCategory;

    // Add item to cart
    $data_items = array(
           'id'      => $tickedID,
           'qty'     => 1,
           'price'   => $ticketPrice,
           'category'    => $ticketCategory,
           'options' => array()
        );

    $this->cart->insert($data_items);

    $cart = $this->cart->contents();
    echo '<pre>';
    echo print_r($cart);
    echo '</pre>';




}

基本上我从会话中获取userIDeventIDtickedID变量,然后运行查询以获取具有特定ID的标记。我运行查询结果并从中获取$thicketPrice$ticketCategory变量。然后我尝试将$data_items中的变量设置为插入购物车本身。最后,我尝试echo护理的内容,我得到的只是一个空数组。

会话,数据库和购物车库都是自动加载的,会话正在使用数据库,它们有ci_sessions表。会话还有一个密钥,出了什么问题?

2 个答案:

答案 0 :(得分:3)

成功购物车的注意事项:

  • 'price'&gt; 0
  • 'name'(或类似字段)最好不要在unicode中

答案 1 :(得分:1)

您需要name索引,因为它是强制性的。

  • id - 商店中的每件商品都必须具有唯一标识符。通常,这将是“sku”或其他此类标识符。
  • 数量 - 购买的数量。
  • price - 商品的价格。
  • name - 项目的名称。
  • options - 标识产品所需的任何其他属性。这些必须通过数组传递。
  

重要:上面的前四个数组索引(id,qty,price和name)是必需的。如果省略其中任何一项,数据将不会保存到购物车中。第五个索引(选项)是可选的。它适用于您的产品具有与之相关的选项的情况。使用数组作为选项,如上所示。

来自http://ellislab.com/codeigniter/user-guide/libraries/cart.html

那么,就像这样:

$data_items = array(
       'id'      => $tickedID,
       'qty'     => 1,
       'price'   => $ticketPrice,
       'name'    => $someName,
       'options' => array('category'=>$ticketCategory)
    );