как показывать продукт и многообразные изображения правильно с php и mysql?

некоторое время назад я ни ломаюсь голова на как делать это правильной формой, у меня не было проблем в вооруженный базой данных в показывании определенного продукта со всеми Вашими изображениями (в php), что производит мне сомнения, если я делаю это правильной формой, так как я делаю консультацию в базу данных, которая является следующей:

SELECT p.id схвати id_producto, я получаю титул, описание, цена, маршрут FROM продукты p JOIN изображения i ON i.id_producto = p.id JOIN галерея g ON g.id = i.id_galeria WHERE p.id = 1

до там варвар, когда я получаю все данные в php, я делаю один print_r () и это получаю:

[0] => Array
    (
        [id_producto] => 1
        [0] => 1
        [titulo] => parlante philips
        [1] => parlante philips
        [descripcion] => parlante philips extra bass
        [2] => parlante philips extra bass
        [precio] => 1500
        [3] => 1500
        [ruta] => https://images.philips.com/is/image/PhilipsConsumer/CSP630_00-IMS-es_AR?$jpglarge$&wid=1250
        [4] => https://images.philips.com/is/image/PhilipsConsumer/CSP630_00-IMS-es_AR?$jpglarge$&wid=1250
    )

[1] => Array
    (
        [id_producto] => 1
        [0] => 1
        [titulo] => parlante philips
        [1] => parlante philips
        [descripcion] => parlante philips extra bass
        [2] => parlante philips extra bass
        [precio] => 1500
        [3] => 1500
        [ruta] => http://www.vitepal.cl/imageDB/CSP1200.jpg
        [4] => http://www.vitepal.cl/imageDB/CSP1200.jpg
    )

[2] => Array
    (
        [id_producto] => 1
        [0] => 1
        [titulo] => parlante philips
        [1] => parlante philips
        [descripcion] => parlante philips extra bass
        [2] => parlante philips extra bass
        [precio] => 1500
        [3] => 1500
        [ruta] => http://mla-s1-p.mlstatic.com/parlantes-audio-486511-MLA20578733894_022016-Y.jpg
        [4] => http://mla-s1-p.mlstatic.com/parlantes-audio-486511-MLA20578733894_022016-Y.jpg
    )

)

а именно, я получаю все данные правильно, но в кредит 3 изображения для того же продукта, он приносит мне 3 раза все данные о продукте, вещь, которая мне не заканчивает казаться самым правильным, так как единственное, в чем я нуждаюсь, состоит в том, чтобы принес 1 единственный раз данные о продукте, и 3 изображения.

Есть какой-то способ делать это, что я прошу в единственной консультации? или он был бы должен делать консультацию, чтобы приносить данные и другую отделите, чтобы приносить изображения, и там делать foreach для того, чтобы он показал все?

большое спасибо, я надеюсь ответ!

0
задан 08.04.2017, 04:18
1 ответ

Лучшая форма serГ, - чтобы отлаживать консультацию с "LEFT JOIN" Все типы Join в SQL

Esquema SQL JOINS


Другая soluciГіn...

, Или если ты встречаешься с array asГ - ты можешь отлаживать это следующего способа: Последованные

    <?php

$producto[0] = Array
    (
        "id_producto" => 1,
        0 => 1,
        "titulo" => "parlante philips",
        1 => "parlante philips",
        "descripcion" => "parlante philips extra bass",
        2 => "parlante philips extra bass",
        "precio" => 1500,
        3 => 1500,
        "ruta" => 'https://images.philips.com/is/image/PhilipsConsumer/CSP630_00-IMS-es_AR?$jpglarge[110]amp;wid=1250',
        4 => 'https://images.philips.com/is/image/PhilipsConsumer/CSP630_00-IMS-es_AR?$jpglarge[110]amp;wid=1250'
    );

$producto[1] = Array
    (
      "id_producto" => 1,
      0 => 1,
      "titulo" => "parlante philips",
      1 => "parlante philips",
      "descripcion" => "parlante philips extra bass",
      2 => "parlante philips extra bass",
      "precio" => 1500,
      3 => 1500,
      "ruta" => "http://www.vitepal.cl/imageDB/CSP1200.jpg",
        4 => "http://www.vitepal.cl/imageDB/CSP1200.jpg"
    );

$producto[2] = Array
    (
      "id_producto" => 1,
      0 => 1,
      "titulo" => "parlante philips",
      1 => "parlante philips",
      "descripcion" => "parlante philips extra bass",
      2 => "parlante philips extra bass",
      "precio" => 1500,
      3 => 1500,
      "ruta" => "http://mla-s1-p.mlstatic.com/parlantes-audio-486511-MLA20578733894_022016-Y.jpg",
        4 => "http://mla-s1-p.mlstatic.com/parlantes-audio-486511-MLA20578733894_022016-Y.jpg"
    );




    $product_imgs = array();
    $x = 0;
    $n = 0;

    foreach($producto as $name => $value) {
        foreach($value as $name2 => $value2)  {

            if((string)$name2 == 'ruta' || (string)$name2 == 4 ) {
              $product_imgs[$n][$name2] = $value2;
              $x++;
            }

            if($x == 2) {
              $n++;
              $x = 0;
            }
        }
  }
unset($producto[0]['ruta']);
unset($producto[0][4]);

$producto[0]['images'] = $product_imgs;

var_dump($producto[0]);

 ?>

...

 array (size=9)
  'id_producto' => int 1
  0 => int 1
  'titulo' => string 'parlante philips' (length=16)
  1 => string 'parlante philips' (length=16)
  'descripcion' => string 'parlante philips extra bass' (length=27)
  2 => string 'parlante philips extra bass' (length=27)
  'precio' => int 1500
  3 => int 1500
  'images' => 
    array (size=3)
      0 => 
        array (size=2)
          'ruta' => string 'https://images.philips.com/is/image/PhilipsConsumer/CSP630_00-IMS-es_AR?$jpglarge[111]amp;wid=1250' (length=91)
          4 => string 'https://images.philips.com/is/image/PhilipsConsumer/CSP630_00-IMS-es_AR?$jpglarge[111]amp;wid=1250' (length=91)
      1 => 
        array (size=2)
          'ruta' => string 'http://www.vitepal.cl/imageDB/CSP1200.jpg' (length=41)
          4 => string 'http://www.vitepal.cl/imageDB/CSP1200.jpg' (length=41)
      2 => 
        array (size=2)
          'ruta' => string 'http://mla-s1-p.mlstatic.com/parlantes-audio-486511-MLA20578733894_022016-Y.jpg' (length=79)
          4 => string 'http://mla-s1-p.mlstatic.com/parlantes-audio-486511-MLA20578733894_022016-Y.jpg' (length=79)
0
ответ дан 24.11.2019, 10:05