2

我需要一些帮助。我保存了两种类型的图像,但不是必需的。

我想默认显示“渲染”图像,但如果没有“渲染”图像,则显示“小册子”图像。

现在,如果没有渲染图像,它被设置为显示 nopic.png 图像,但我想用小册子图像替换 nopic 图像。总会有小册子图像,因此不需要 nopic 图像。

这是当前代码...

$query->select('*, c.alias')
        ->from('#__iproperty_catfp_img i')
        ->join('inner','#__iproperty_categories c ON c.id = i.cat_id')
        ->where('i.fp_id = '.(int)$fb_id)
        ->where('i.cat_id = '.(int)$cat_id)
        ->where('i.img_type = "rendering"')
        ->order('i.id DESC');
    $db->setQuery($query, 0, 1);

    $thumb         = $db->loadObject();

    $root_path     = ($rel_path) ? JURI::root(true) : substr(JURI::root(), 0, -1);




    //add appropriate path to thumbnail file

    if ( $thumb ) {// if rendered image

        $thumbnail = $root_path."/fpimagegallery/$thumb->alias/$thumb->img_type/$thumb->file_name";
    } 

    else { //no rendered image, show brochure image
        $path      = $root_path.$settings->fpimgpath;
        $thumbnail = $path.'nopic.png';
    }

这是我尝试过的,但没有显示图像...

$query->select('*, c.alias')
        ->from('#__iproperty_catfp_img i')
        ->join('inner','#__iproperty_categories c ON c.id = i.cat_id')
        ->where('i.fp_id = '.(int)$fb_id)
        ->where('i.cat_id = '.(int)$cat_id)
        ->where('i.img_type = "rendering" AND "brochure"')
        ->order('i.id DESC');
    $db->setQuery($query, 0, 1);

    $thumb         = $db->loadObject();

    $root_path     = ($rel_path) ? JURI::root(true) : substr(JURI::root(), 0, -1);




    //add appropriate path to thumbnail file

    if ( $thumb ) {// if rendered image

        $thumbnail = $root_path."/fpimagegallery/$thumb->alias/$thumb->rendering/$thumb->file_name";
    } 

    else { //if no rendered image, show brochure image
        $thumbnail = $root_path."/fpimagegallery/$thumb->alias/$thumb->brochure/$thumb->file_name";
    }

我想如果我正确地用了 Where 语句,我可以让它工作吗?

这是表格中的内容... 表格截图 http://expressville.com/fp_images_ss.png

实际上就文件路径而言......代码甚至可以像这样更改。所有文件夹都有一个渲染和小册子子文件夹,每个文件夹中都有相应的图像。

if ( $thumb ) {
$thumbnail = $root_path . "/fpimagegallery/{$thumb->alias}/rendering/{$thumb->file_name}";
}     
else {
$thumbnail = $root_path . "/fpimagegallery/{$thumb->alias}/brochure/{$thumb->file_name}";

}

4

1 回答 1

0

我的情况与您的要求类似,如下所示。

我有一个表 emp1,其架构如下:

+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| name     | text          | YES  |     | NULL    |       |
| sal      | decimal(10,0) | YES  |     | NULL    |       |
| cat_name | varchar(11)   | YES  |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+

并带有以下数据:

+------+------+----------+
| name | sal  | cat_name |
+------+------+----------+
| c    | 4002 | cat2     |
| d    | 7001 | cat2     |
| a    | 1234 | cat1     |
| b    | 2235 | cat2     |
| c    | 1234 | cat1     |
| a    | 2235 | cat2     |
| e    | 1234 | cat1     |
+------+------+----------+

我有以下要求:

  • 选择那些namesal从那些有 cat_name 的元组中,'cat1'即使它name也存在于另一个元组中cat_name 'cat2',以及(即UNION)选择那些namesal只有'cat2'作为cat_name但不是'cat1'

因此,在我的情况下,与您的情况'cat1'相似'rendering'并且'cat2'相似'brochure'

我不得不使用以下 SQL:

select name, sal from emp1 where name in (select name from emp1 group by name having 
count(cat_name)=1)
union
select name, sal from emp1 where (name, sal, cat_name) in
(select * from emp1 where cat_name='cat1');

输出/输出

+------+------+
| name | sal  |
+------+------+
| d    | 7001 |
| b    | 2235 |
| e    | 1234 |
| a    | 1234 |
| c    | 1234 |
+------+------+

这里'd', 'b',每个'e'只有一个cat_name,因此它们被包括在内,'a'并且'c'同时具有cat_nameie'cat1''cat2'; 因此包括了 as'a''c'with cat_nameas的记录'cat1'

由于我不熟悉您在php中使用的语法,因此无法为您提供完整的解决方案。希望这会有所帮助。

于 2013-10-28T06:59:12.050 回答