需要帮助从opencart管理面板操作数据库值

时间:2014-09-16 01:34:29

标签: php mysql sql opencart

我正在为opencart安装创建扩展程序。我目前正在运行OpenCart V1.5.5.1。您将在下面找到我为达到这一点而遵循的代码和程序。希望有人可以帮助我找到完成项目的这一部分所需的其他内容。

我做的第一件事是在opencart数据库的product表中添加两列。这些列如下:

goal_activate tinyint(1)(寻找0或1的可能值)

sales_goal INT(任何整数)

我还使用以下代码为管理面板添加必要的文本和选择框以显示控件。这里的想法是为每个产品提供一个选择框,允许我们的员工打开销售目标(goal_activate)并设置目标值(sales_goal)。

    <file name="admin/controller/catalog/product.php">
    <operation>
        <search position="after"><![CDATA[$this->data['entry_quantity'] = $this->language->get('entry_quantity');]]></search>
        <add><![CDATA[
        $this->data['entry_goal_activate'] = $this->language->get('entry_goal_activate');
        $this->data['entry_sales_goal'] = $this->language->get('entry_sales_goal');
        ]]></add>
    </operation>                
</file>
<file name="admin/language/english/catalog/product.php">
    <operation>
        <search position="after"><![CDATA[$_['entry_quantity']         = 'Quantity:';]]></search>
        <add><![CDATA[
        $_['entry_goal_activate']     = 'Activate Sales Goal<br/><span class="help">Activate the sales goal thermometer for this product.</span>';
        $_['entry_sales_goal']     = 'Set sales goal<br/><span class="help">Sales goal is set in total units sold.</span>';
        ]]></add>
    </operation>                
</file>

<file name="admin/view/template/catalog/product_form.tpl">
    <operation>
        <search position="before"><![CDATA[<td><?php echo $entry_minimum; ?></td>]]></search>
        <add><![CDATA[
        <td><?php echo $entry_goal_activate; ?></td>
            <td><select name="goal_activate">
              <?php if ($goal_activate) { ?>
              <option value="1" selected="selected"><?php echo $text_yes; ?></option>
              <option value="0"><?php echo $text_no; ?></option>
              <?php } else { ?>
              <option value="1"><?php echo $text_yes; ?></option>
              <option value="0" selected="selected"><?php echo $text_no; ?></option>
              <?php } ?>
            </select></td>
        </tr>
        <tr>
        <td><?php echo $entry_sales_goal; ?></td>
        <td><input type="text" name="sales_goal" value="<?php echo $sales_goal; ?>" size="2" /></td>
        </tr>
        <tr>
        ]]></add>
    </operation>                
</file>

现在,管理面板中的一切看起来都很棒,而且我的数据库列都具有正确的数据类型和默认值。我所缺少的是代码,它将根据创建的控件的用户输入实际更改我的数据库值。我相信我缺少对admin / controller / catalog / product.php的控制器文件的一些补充,我只是不确定我需要做什么。任何帮助将不胜感激。如果我的问题中的任何内容不是形成或缺乏信息,我很抱歉,这是我在这里的第一篇文章。

2 个答案:

答案 0 :(得分:0)

数据库处理由Opencart的MVC-L框架的model层完成。所以你必须做这样的改变:

<file name="admin/model/catalog/product.php">
    <operation>
        <search position="before"><![CDATA[
        $this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape(html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8')) . "' WHERE product_id = '" . (int)$product_id . "'");         
        ]]></search>
        <add><![CDATA[
        $this->db->query("UPDATE " . DB_PREFIX . "product SET your_field_1 = '" . $this->db->escape($data['your_field_1']) . "', your_field_2 = '" . $this->db->escape($data['your_field_2']) . "' WHERE product_id = '" .  (int)$product_id . "'");
        ]]></add>
    </operation>
</file>

答案 1 :(得分:0)

除了Tibor B.提交的答案之外,我还必须包含以下代码:

<file name="admin/controller/catalog/product.php">  
<operation>
        <search position="before"><![CDATA[if (isset($this->request->post['minimum'])) {]]></search>
        <add><![CDATA[
        if (isset($this->request->post['goal_activate'])) {
        $this->data['goal_activate'] = $this->request->post['goal_activate'];
            } else if (!empty($product_info)) {
                $this->data['goal_activate'] = $product_info['goal_activate'];
            } else {
                $this->data['goal_activate'] = 0;
            }
        ]]></add>
    </operation>
    <operation>
        <search position="before"><![CDATA[if (isset($this->request->post['quantity'])) {]]></search>
        <add><![CDATA[
        if (isset($this->request->post['sales_goal'])) {
        $this->data['sales_goal'] = $this->request->post['sales_goal'];
            } elseif (!empty($product_info)) {
                $this->data['sales_goal'] = $product_info['sales_goal'];
            } else {
                $this->data['sales_goal'] = 0;
            }
        ]]></add>
    </operation>