请先让我解释一下我的问题。我有一个网店,有很多产品,但也有很多类别。产品图片是从openicecat.biz导入的,它也是内容提供商。当某个产品没有可用的描述或图像时,会显示noimage.jpg
有人制作了一个代码,用于从产品列表中选择图像并将其用作该类别的图像。 (有空的时候) 当类别具有带图像的子类别和没有图像的子类别时,就会出现问题。显示noimage.jpg,而不是显示带图像的子类别的图像。
例如
catelog -> components -> card readers (no image) -> internal card reader (image)
-> external card reader (no image)
设计代码段的方式,只有当内部和外部读卡器中有两张图片时,才会显示图像,而不是当一个子类别没有图像时。
我想要的是,例如,当子类别内部读卡器具有带图像的产品,并且子类别外部读卡器没有图像时,外部读卡器的图像显示为类别图像对于读卡器。
实施例
catelog -> components -> card readers (image of internal card reader, instead of no image)
-> internal card reader (image)
-> external card reader (no image)
我希望你明白我的意思。
这是代码段:
// Start auto fetch category image from product
if($categories['categories_image'] == "") {
$categories_img_query = tep_db_query("select products_image from " . TABLE_PRODUCTS . " p, products_to_categories pc WHERE p.products_id = pc.products_id AND pc.categories_id = '{$categories['categories_id']}' AND p.products_image IS NOT NULL order by p.products_id ASC");
if(tep_db_num_rows($categories_img_query) > 0) {
$categories_img = tep_db_fetch_array($categories_img_query);
$categories['categories_image'] = $categories_img['products_image'];
}
else {
$categories_img_parent_query = tep_db_query("select categories_id from categories WHERE parent_id = '{$categories['categories_id']}'");
while($categories_img_parent = tep_db_fetch_array($categories_img_parent_query)) {
$categories_img_query = tep_db_query("select products_image from " . TABLE_PRODUCTS . " p, products_to_categories pc WHERE p.products_id = pc.products_id AND pc.categories_id = '{$categories_img_parent['categories_id']}' AND p.products_image IS NOT NULL order by p.products_id ASC");
if(tep_db_num_rows($categories_img_query) > 0) {
$categories_img = tep_db_fetch_array($categories_img_query);
$categories['categories_image'] = $categories_img['products_image'];
}
}
}
}
// End auto fetch category image from product
有人可以帮我完成这个片段吗?
btw1,它适用于oscommerce。
btw2,omg,我几乎花了40分钟解释并输入这个问题,这也是一枚奖章(永恒耐心的勋章); - )
答案 0 :(得分:0)
首先,一些批评。你的WHERE子句应该在你的JOIN中。那就是:
WHERE p.products_id = pc.products_id
实际应该是
p JOIN pc USING (products_id)
这更快更明确。
关于您的具体问题:
我不明白你怎么能有空白图像(你总是指定products_image IS NOT NULL)所以暗示noimage.jpg实际上是作为该图像的值存储的。在这种情况下,问题只是你要添加任何找到的图像,即使它是noimage.jpg。而不是从tep_db_fetch_array()添加第一个图像,循环遍历它,看看是否找到了非noimage。例如:
while ($row = tep_db_fetch_assoc($categories_img_query)) {
if ($row['products_image'] <> 'noimage.jpg'
or !isset($categories['categories_image'])
) {
$categories['categories_image'] = $row['products_image'];
}
}
这也假设您不关心为该类别添加SPECIFIC图像,只需要任何非noimage.jpg(如果有的话)。