You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CodeIgniter 3.x中点击按钮时向数据库插入值为1的单条数据

CodeIgniter 3.x 实现点击按钮插入值为1的数据到数据库

1. 调整视图代码

优化原有视图片段,适配请求提交逻辑,同时处理CodeIgniter的CSRF安全验证:

<?php if(intval($fspd->quantity) <= 0): ?>
    <form id="restockForm">
        <!-- 可选:如果需要关联商品ID等额外数据,添加隐藏字段 -->
        <input type="hidden" name="product_id" value="<?= $fspd->id ?>">
        <!-- CSRF令牌,CodeIgniter默认开启保护,必须携带 -->
        <input type="hidden" name="<?= $this->security->get_csrf_token_name() ?>" value="<?= $this->security->get_csrf_hash() ?>">
        <input type="text" id="demo" value="" readonly>
        <a href="javascript:;" onclick="clickdata()" class="btn btn-secondary btn-lg">Request For Restock</a>
    </form>
<?php else: ?>
    <?php if($fspd->stock_status == 1): ?>
        <!-- 原有其他内容 -->
    <?php endif; ?>
<?php endif; ?>

2. 实现前端点击触发函数

在视图底部或独立JS文件中添加AJAX请求,提交数据到控制器:

function clickdata() {
    const formData = new FormData(document.getElementById('restockForm'));
    // 手动添加要插入的固定值1
    formData.append('status', 1);

    fetch('<?= base_url('inventory/submit_restock') ?>', {
        method: 'POST',
        body: formData
    })
    .then(res => res.json())
    .then(data => {
        if(data.success) {
            alert('补货请求已提交');
            // 可选:提交后隐藏按钮区域
            document.getElementById('restockForm').style.display = 'none';
        } else {
            alert('提交失败,请重试');
        }
    })
    .catch(err => {
        console.error('请求错误:', err);
        alert('网络异常,请稍后再试');
    });
}

3. 控制器处理请求

创建或修改控制器(示例命名为Inventory),添加数据处理方法:

<?php
class Inventory extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->model('Restock_model');
        // 可选:验证用户登录状态
        $this->load->library('session');
        if(!$this->session->userdata('logged_in')) {
            redirect('login');
        }
    }

    public function submit_restock() {
        if($this->input->post()) {
            // 构造插入数据,status固定为1
            $insertData = [
                'status' => 1,
                'product_id' => $this->input->post('product_id'),
                'created_at' => date('Y-m-d H:i:s') // 可选:添加时间戳
            ];

            // 调用模型执行插入
            $result = $this->Restock_model->add_restock_request($insertData);

            echo json_encode(['success' => $result]);
        } else {
            echo json_encode(['success' => false, 'msg' => '非法请求']);
        }
    }
}
?>

4. 模型实现数据库插入

创建Restock_model.php模型文件,编写数据库操作逻辑:

<?php
class Restock_model extends CI_Model {
    public function __construct() {
        parent::__construct();
        $this->load->database();
    }

    public function add_restock_request($data) {
        // 替换为你的实际数据表名
        $this->db->insert('restock_requests', $data);
        return $this->db->affected_rows() > 0;
    }
}
?>

注意事项

  • 确保数据库表restock_requests存在对应字段(如status、product_id等,可根据业务调整)
  • 不要随意关闭CSRF保护,这是CodeIgniter的安全基础
  • 可在控制器中添加表单验证逻辑,比如校验product_id的合法性

内容的提问来源于stack exchange,提问作者Rahul tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:32:20