【问题标题】:OpenCart SQL request and display on product template pageOpenCart SQL 请求并显示在产品模板页面上
【发布时间】:2018-06-04 03:30:25
【问题描述】:

我正在尝试访问要在 OpenCart 2.0.3.1 的产品页面上显示的表格的 ID。

我正在尝试从表中访问一个 id,然后将其带入产品页面,并将其显示在下拉列表的变体选项中。

我为一个产品运行 SQL 并获得 id 21。因此出于调试原因,我手动添加了两个变量(product_id 和 option_id),因此这些变量不会导致问题。下面是 sql 查询工作的截图

所以它返回数字 21。显然,当我将 sql 更改为每个产品的 product_id 和 option_id 时,它将返回相关的 id。

我有这个设置:

目录/模型/目录/product.php

public function getOtpOptionId($product_id)
{
    $otp_option_query = $this->db->query("SELECT id from oc_otp_option_value where product_id = 62 AND parent_option_value_id = 20");
    $otp_option = $otp_option_query->row;
    return $otp_option;
}

目录/控制器/product/product.php

下面

foreach ($option['product_option_value'] as $option_value) {

我添加

$data['otp_option_id'] = $this->model_catalog_product->getOtpOptionId($this->request->get['product_id']);

目录/主题/*/template/product/product.tpl

我变了:

<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?></option>

成为

<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?> (<?php echo $data['otp_option_id']; ?>)</option>

我希望它在下拉列表中显示所有选项(21)

例如:
红色 (21)
蓝色 (21)
绿色 (21)

它只显示每个选项,没有数字,只有 ()。

我做错了什么?

提前致谢

/******* 更新 *******/

所以我更改了模型中的代码以获取每个选项的 id 而不是使用数字

    public function getOtpOptionId($product_id, $option_value_id)
{
    $otp_option_query = $this->db->query("SELECT id from oc_otp_option_value where product_id = '" . (int)$product_id . "' AND parent_option_value_id = '" . (int)$option_value_id . "'");
    $otp_option = $otp_option_query->row;
    return $otp_option;
}

【问题讨论】:

    标签: php mysql opencart opencart2.x


    【解决方案1】:

    如果您以后不想在foreach 循环中使用此代码:

    $data['otp_option_id'] = $this->model_catalog_product->getOtpOptionId($this->request->get['product_id']);
    

    你不应该把它放在循环内,你可以把它放在这段代码之后,也就是循环外:

    $data['options'] = array();
    

    并且在您的视图文件中,而不是:

    <option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?> (<?php echo $data['otp_option_id']; ?>)</option>
    

    用途:

    <option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?> (<?php echo $otp_option_id; ?>)</option>
    

    【讨论】:

    • 谢谢你。它有效! @DigitCart。但是我需要在循环中使用它,因为每个产品都有不同的 product_id。我可以这样做吗?
    • 您可以在 /* UPDATE */ 下看到我在上面更改的代码,谢谢
    • 不客气。所以你可以在循环中使用它。如果我的帖子解决了您的问题,请将其标记为已接受。谢谢
    • 当我把它放在循环中时它停止工作。有什么想法吗?
    • 你知道为什么当我在循环中有一个变量时它不起作用吗?例如,如果我什至把 $data['otp_option_id'] = "yes";它没有显示yes这个词?
    猜你喜欢
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    相关资源
    最近更新 更多