PHP where if语句

时间:2013-10-28 03:21:18

标签: php mysql

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

我想显示"呈现"默认情况下是图片,但如果没有"呈现"图片,显示"宣传册"而不是图像。

现在它设置为显示nopic.png图像,如果没有渲染图像,但我想用手册图像替换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语句,我可以让它发挥作用吗?

这是表中的内容...... table screenshot 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}";

}

1 个答案:

答案 0 :(得分: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     |
+------+------+----------+

我有以下要求:

  • 从那些有cat_name name的元组中选择sal'cat1',即使name也存在于cat_name的另一个元组中'cat2'以及(即UNION)选择仅name作为sal而非'cat2'的{​​{1}}和cat_name } 即可。

因此,在我的情况下,'cat1''cat1'类似,'rendering'与您的'cat2'类似。

我必须使用以下SQL:

'brochure'

<强> O / P

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'两者{ {1}}即'c'cat_name;因此,'cat1''cat2'的记录包括'a' 'c'

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