mysql - 如何在 Opencart 中内爆数据?

标签 mysql opencart implode

我想用逗号分解平台数据,例如:Windows、Mac、Linux。

我尝试了不同的选择,但仍未找到解决方案。所以我有一个问题,如何爆破我用这段代码获得的数据?

<?php

$this->load->model('catalog/platform');

$query = $this->db->query("SELECT p2p.platform_id, p.parent_id FROM "
. DB_PREFIX . "platform p LEFT JOIN " . DB_PREFIX . "product_to_platform p2p
ON p.platform_id=p2p.platform_id WHERE product_id='" . $product_id . "' AND parent_id=0");

$prodplatforms = $query->rows;

foreach($prodplatforms as $prodplatform){

    $platform_id = $prodplatform['platform_id'];
    $platform_info = $this->model_catalog_platform->getPlatform($platform_id);
    $caturl = (HTTP_SERVER . 'index.php?route=product/platform&path=' . $platform_id);
    $str = $platform_info['name'];

        echo '<a href="' . $caturl . '">' . $str . '</a>';
}
?>

最佳答案

您只需要一点点编辑 - 而不是 $str = $platform_info['name']; 这样做:

// ...
$prodplatforms = $query->rows;

$platforms = array();

foreach($prodplatforms as $prodplatform){
    $platform_id = $prodplatform['platform_id'];
    $platform_info = $this->model_catalog_platform->getPlatform($platform_id);
    $caturl = (HTTP_SERVER . 'index.php?route=product/platform&path=' . $platform_id);
    $platforms[] = $platform_info['name'];
}

echo '<a href="' . $caturl . '">' . implode(', ', $platforms) . '</a>';

但现在看代码我猜你只是想让每个平台名称链接到它的平台 URL...

查看您的代码,我猜您是在模板文件中完成所有这些工作。也许您只是将来自您的 Controller 、模型和模板的代码放在一起——这没问题,但如果您真的在一个模板中完成这一切,请将代码拆分到各个层:

Controller :

$this->load->model('catalog/platform');
$prodplatforms = $this->model_catalog_platform->getPlatforms($product_id);

$this->data['platforms'] = array();

foreach($prodplatforms as $prodplatform){
    $platform_id = $prodplatform['platform_id'];
    $platform_info = $this->model_catalog_platform->getPlatform($platform_id);
    $caturl = (HTTP_SERVER . 'index.php?route=product/platform&path=' . $platform_id);
    $this->data['platforms'][] = '<a href="' . $caturl . '">' . $platform_info['name'] . '</a>';
}

模型(catalog/model/catalog/platform.php):

public function getPlatforms($product_id) {
    $query = $this->db->query("SELECT p2p.platform_id, p.parent_id FROM " . DB_PREFIX . "platform p LEFT JOIN " . DB_PREFIX . "product_to_platform p2p ON p.platform_id=p2p.platform_id WHERE product_id='" . $product_id . "' AND parent_id=0");

    return $query->rows;
}

查看模板:

<div><?php echo implode(', ', $platforms); ?></div>

关于mysql - 如何在 Opencart 中内爆数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16424376/

相关文章:

mysql - 获取多对多关系中所有实体的数据

node.js - 添加或更新在spurCommerce中不起作用的产品

php - 检索给定日期时间前 10 分钟的记录

php - 如何在 opencart 中创建自定义管理页面?

php - 使用php从mysql中搜索以逗号分隔的多行

mysql - 如何从硬盘导出MySQL数据库(数据文件夹)?

php - MySQL:获取具有连续日期的行

php - Laravel 中类 'modelName' 的对象无法转换为 int

php - 使用内爆将 HTML 表单 $_POST 数组插入 MySQL

mysql - 如何使用 MySQL 中的 datediff 函数过滤行?