【问题标题】:codeigniter Cart issue with insert data插入数据的codeigniter购物车问题
【发布时间】:2013-06-17 02:12:28
【问题描述】:

我是代码点火器的新手。在这里,我正在使用购物车进行产品结帐。当我将产品添加到购物车时,它适用于前三种产品,在添加任何产品后视为第四种产品。如果任何产品在三个产品之后添加到购物车,它将替换现有的第四个产品。但购物车上只有前三个产品显示,第四个不显示,而且我不能在购物车上添加超过四个产品,我正在使用 jquery ajax 进行购物车更新

jquery ajax 代码

$('.addcart').click(function(){
    var proid=$(this).attr('id');           
    $.post('<?php echo base_url()?>productajax',{typ:'addtocart',proid:proid},function(data){           

    })
    return false;
})

product add to cart code



 $proid=$this->input->post('proid');
                    $this->db->where('pro_id',$proid);
                    $data=$this->db->get('product')->result();
                    foreach ($data as $pro)
                    {
                        $proname=$pro->pro_name;
                        $price=$pro->s1price;

                        $proimg=$pro->image_name;
                        $nwt=$pro->case_netweight;
                        $gwt=$pro->case_grossweight;
                        $cbm=$pro->cbm;
                    }

                    $propriceinr =round($price + round(($price * $this->session->userdata('user_margin'))/100,2));          

                    $dat = array(
                   'id'      => $proid,
                   'qty'     => 1,
                   'price'   => $propriceinr,
                   'name'    => $proname,
                   'options' => array('cbm' => $cbm, 'nwt' => $nwt,'gwt'=>$gwt,'image' => $proimg ,'price'=>$price,)
                );              
                    $this->cart->insert($dat);

config.php

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

我不知道为什么在插入三个产品后不更新产品购物车。任何人都给我这个问题的指导。谢谢提前

【问题讨论】:

  • 在您的问题中显示config.php session 设置

标签: php codeigniter session session-cookies shopping-cart


【解决方案1】:

尝试在 application/config/config.php 中禁用 csrf 保护

$config['csrf_protection']  = FALSE;

然后,如果 ajax 调用开始工作,再次启用它并将 ci_csrf_token 变量添加到 ajax 调用。

【讨论】:

    【解决方案2】:

    请设置

    $config['sess_use_database'] = FALSE;

    到您的config.php 中的$config['sess_use_database'] = TRUE;。

    现在您的产品详细信息保存在 cookie 中,最大限制为 4kb。
    通过启用$config['sess_use_database'] = TRUE;。

    此功能可让您将信息插入数据库表中,即:

    $config['sess_table_name'] = 'ci_sessions';。

    希望对你有用

    如果您没有ci_sessions 表,请在此处查询:

     CREATE TABLE `ci_sessions` (
     `session_id` varchar(40) NOT NULL DEFAULT '0',
     `ip_address` varchar(16) NOT NULL DEFAULT '0',
     `user_agent` varchar(50) NOT NULL,
     `last_activity` int(10) unsigned NOT NULL DEFAULT '0',
    `user_data` text NOT NULL,
    PRIMARY KEY (`session_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    

    【讨论】:

    • 在 ci_sessions 中我必须为购物车创建的列名是什么??
    • 无需创建任何列。
    • 只是将表创建为空结构??我有一个错误,因为我的数据库中没有这样的表名,它给出了一些错误
    • @tamil_arvu 你的数据库中有ci_sessions 表吗??
    • 不,我的数据库中没有 ci_session 表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多