Muszę wypełnić kanał e-commerce z eklatmatami tutaj, jest nagłówek:

|image_1|image_2|image_3|

Mam stół, w którym przechowuję lub nie, dodatkowe obrazy dla jednego produktu.

Prośba więc o to, aby zobaczyć, czy są dodatkowe zdjęcia, z limitem SQL 3, ponieważ chcę tylko 3 obrazów max w mojej karmieniu.

Potrzebuję, jest wypełnić kanał pustych rur, jeśli nie ma zdjęć i nie znam logiki, aby to zrobić.

Wyjście byłoby na przykład w ten sposób, jeśli mam 2 dodatkowe zdjęcia:

|url/image_1.jpg|url/image_2.jpg||   <- empty pipe to match the header of 3

Lub tylko jeden obraz:

|url/image_1.jpg|||

Mój kod do tej pory:

$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']."|" ; 
    }
}

Dzięki za pomoc. Sebastien.

php
0
Sebastien R. 1 marzec 2019, 18:45

2 odpowiedzi

Najlepsza odpowiedź

Utwórz tablicę 4 i umieść do niej ścieżkę obrazu, a następnie wpisuj go do łańcucha oddzielonego przez "|".

$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, '|');
2
Bacteries 1 marzec 2019, 16:13

Jeśli prawidłowo zrozumiałem, możesz spróbować podejść w ten sposób ~ choć przy użyciu niestandardowych nazw takich jak tep_db_fetch_array być może mylić problem?

$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) . '|';

}
0
RamRaider 1 marzec 2019, 16:13