OpenCart SQL请求并显示在产品模板页面上

问题描述 投票:0回答:1

我正在尝试访问id以在OpenCart 2.0.3.1的产品页面上显示的表。

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

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

enter image description here

因此它返回数字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.php

下面

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

我加

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

目录/主题/ * /模板/产品/ 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个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.