更改插入查询以更新查询

时间:2017-10-05 17:29:57

标签: php mysql opencart

我在OpenCart MVC工作,我无法更新数据库记录。我有一个列表,显示db表中的所有记录。每条记录都有一个下拉列表,可以选择编辑。当单击编辑时,打开填写的表单,输入填入现有值(到目前为止一切都很好!),当输入新信息时,用户应该能够点击保存按钮并更新数据库。目前,保存按钮查询是插入查询。所以我想它不写,因为它已经有了记录。我也宁可不添加新按钮(即更新)ID,以便能够使用现有的保存按钮。如何更改模型以反映此情况?我是否有插入和更新查询以及某种检查?我是否在控制器上执行此操作?我对如何做到这一点感到有些困惑。

MODEL:

public function addCampaign($data) {

        $this->db->query("INSERT INTO " . DB_PREFIX . "campaigns SET campaign_name = '" . $this->db->escape($data['campaign_name']) . "', campaign_giving_goal = '" . (float)$data['campaign_giving_goal']
        . "', code = '" . $this->db->escape($data['code']) . "', campaign_active = '" . $this->db->escape($data['campaign_active']) . "', campaign_giving_count_goal = '" . (float)$data['campaign_giving_count_goal'] . "', campaign_owner = '" . $this->db->escape($data['campaign_owner']). "', date_beginning = '" . $this->db->escape($data['date_beginning']). "', date_ending = '" . $this->db->escape($data['date_ending']). "'");

        $this->cache->delete('campaign');

        return $campaign_id;
    }

CONTROL:

public function add() {
        $this->load->language('campaigns/campaign');

        $this->document->setTitle($this->language->get('heading_title'));

        $this->load->model('campaigns/campaign');

        if (($this->request->server['REQUEST_METHOD'] == 'POST') ) {


            $this->model_campaigns_campaign->addCampaign($this->request->post);
            $this->model_campaigns_campaign->addComponent($this->request->post);
            $this->session->data['success'] = $this->language->get('text_success');
            $url = '';          

            if (isset($this->request->get['order'])) {
                $url .= '&order=' . $this->request->get['order'];
            }

            if (isset($this->request->get['page'])) {
                $url .= '&page=' . $this->request->get['page'];
            }

            $this->response->redirect($this->url->link('campaigns/campaign', 'token=' . $this->session->data['token'] . $url, true));
        }

        $this->getForm();

    }

查看:

<div class="cancel-save">
                  <button type="submit" form="form-campaign" data-toggle="tooltip" title="<?php echo $button_save; ?>" class="btn btn-primary" onclick="submitForms()"><i class="fa fa-save"></i></button>

                  <a href="<?php echo $cancel; ?>" data-toggle="tooltip" title="<?php echo $button_cancel; ?>" class="btn btn-default"><i class="fa fa-reply"></i></a>
                </div>

1 个答案:

答案 0 :(得分:1)

试试这个。 在控制器上修改如下。

public function add() {
    $this->load->language('campaigns/campaign');

    $this->document->setTitle($this->language->get('heading_title'));

    $this->load->model('campaigns/campaign');

    if (($this->request->server['REQUEST_METHOD'] == 'POST') ) {
        if (!isset($this->request->get['campaign_id'])) {
            $this->model_campaigns_campaign->addCampaign($this->request->post);
            $this->model_campaigns_campaign->addComponent($this->request->post);
        } else {
            $this->model_campaigns_campaign->updateCampaign($this->request->get['campaign_id'], $this->request->post);
            $this->model_campaigns_campaign->updateComponent($this->request->get['campaign_id'], $this->request->post);
        }
        $this->session->data['success'] = $this->language->get('text_success');
        $url = '';          

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

        $this->response->redirect($this->url->link('campaigns/campaign', 'token=' . $this->session->data['token'] . $url, true));
    }

    $this->getForm();

}

然后在模型上添加此代码

public function updateCampaign($campaign_id, $data) {

    $this->db->query("UPDATE " . DB_PREFIX . "campaigns SET campaign_name = '" . $this->db->escape($data['campaign_name']) . "', campaign_giving_goal = '" . (float)$data['campaign_giving_goal']
    . "', code = '" . $this->db->escape($data['code']) . "', campaign_active = '" . $this->db->escape($data['campaign_active']) . "', campaign_giving_count_goal = '" . (float)$data['campaign_giving_count_goal'] . "', campaign_owner = '" . $this->db->escape($data['campaign_owner']). "', date_beginning = '" . $this->db->escape($data['date_beginning']). "', date_ending = '" . $this->db->escape($data['date_ending']). "' WHERE campaign_id = '" . (int)$campaign_id . "'");

    $this->cache->delete('campaign');
}

我无法提供updateComponen模型,因为您没有编写它。也许您可以使用updateCampaign代码作为参考来编写它。