我需要在电子商务Feed中填充多余的图片 这是标题:
|image_1|image_2|image_3|
我有一张桌子,我可以存放或不存放一张产品的多余图像。
所以我请求查看是否有一些额外的图像,SQL限制为3,因为我的供稿中最多只需要3张图像。
我需要的是,如果没有图像并且我不知道这样做的逻辑,则用空管道填充Feed。
例如,如果我有2张额外的图片,输出将是这样的:
|url/image_1.jpg|url/image_2.jpg|| <- empty pipe to match the header of 3
或仅一张图像:
|url/image_1.jpg|||
到目前为止我的代码:
$products_extra_images_query = tep_db_query(
"SELECT products_extra_image, products_extra_images_id
FROM " . TABLE_PRODUCTS_EXTRA_IMAGES .
" WHERE products_id='" . (int)$row->id . "' LIMIT 3");
if (tep_db_num_rows($products_extra_images_query) >= 1){
// there are some extra_images
while ($extra_images = tep_db_fetch_array($products_extra_images_query)) {
$output .= $extra_images['products_extra_image']."|" ;
}
}
感谢您的帮助。 塞巴斯蒂安
答案 0 :(得分:2)
创建一个由4组成的数组,然后将图像路径放入其中,然后将其内嵌到由“ |”分隔的字符串中。
$images = array_fill(0,4,null);
$idx = 0;
if (tep_db_num_rows($products_extra_images_query) >= 1) {
// there are some extra_images
while ($extra_images = tep_db_fetch_array($products_extra_images_query)) {
$images[$idx] = $extra_images['products_extra_image'];
$idx++;
}
}
$output .= implode($images, '|');
答案 1 :(得分:0)
如果我的理解正确,那么您可以尝试使用类似的方法〜,尽管使用诸如tep_db_fetch_array
之类的非标准名称可能会使问题感到困惑?
$rows = tep_db_num_rows( $products_extra_images_query );
if ( $rows > 0 ){
$output=[];
/* add found records to the `output` array rather than a string - or, use `fetch_all` */
while( $extra_images = tep_db_fetch_array($products_extra_images_query)) {
$output[]=$extra_images['products_extra_image'];
}
/* an odd looking loop but should add extra `pipe` chars when there are not 3 results */
for( $i=0; $i < ( 3 - $rows ); $i++ )$output[]='';
echo '|' . implode('|',$output) . '|';
}