2015-08-08 3 views
0

У меня есть одна проблема с отображением записей из моей базы данных, потому что я работаю со средними таблицами. Но я попытаюсь объяснить. У меня есть следующие таблицы в моей базе данных:Отображение результатов из базы данных

  • типа (идентификатора, NAAM)
  • магазины (идентификатора, НА, TYPE_ID ... не важен)
  • продукт (ID, naam, ... не важно)
  • product_shop_tt (идентификатора, product_id, shop_id) - это мой средний стол между продуктом EN магазинов
  • заказов (идентификатора, user_id, статус)
  • order_details (идентификатор, order_id, идентификатор_пользователя, product_shop_tt_id)
  • пользователь (идентификатора, НА, не имеет значение)

Теперь у меня есть следующий код:

<?php 

$rezKor = mysqli_query($kon, "SELECT * FROM korisnici WHERE email = '". $_COOKIE["korisnik"] ."' LIMIT 1"); 
$redKor = mysqli_fetch_assoc($rezKor); 
$user_id = $redKor["id"]; 

$rezOrders = mysqli_query($kon, "SELECT * FROM orders WHERE user_id = ". $user_id ." AND status = 0 ORDER BY id DESC LIMIT 1"); 
$redOrders = mysqli_fetch_assoc($rezOrders); 
$brRez = mysqli_num_rows($rezOrders); 

$rezOrdDetails = mysqli_query($kon, "SELECT * FROM order_details WHERE order_id = ". $redOrders["id"] .""); 

while($redOrdDetails = mysqli_fetch_assoc($rezOrdDetails)){ 
    $rezTT = mysqli_query($kon, "SELECT * FROM product_shop_tt WHERE id = ". $redOrdDetails["product_shop_tt_id"] .""); 
    $redTT = mysqli_fetch_assoc($rezTT); 
    $brTT = mysqli_num_rows($rezTT); 

    $i = 0; 
    $rezShop = mysqli_query($kon, "SELECT * FROM shops WHERE id = ". $redTT["shop_id"] .""); 
    while($redShop = mysqli_fetch_assoc($rezShop)){ 
     if($i == 0){ 
      echo $redShop["naam"] . "<br />"; 
     } 
     $i++; 
     $rezProdukt = mysqli_query($kon, "SELECT * FROM producten WHERE id = ". $redTT["product_id"] .""); 
     while($redProduct = mysqli_fetch_assoc($rezProdukt)){ 
      echo "<br />Ime produkta : " . $redProduct["naam"] . "<br />"; 
     } 
    } 
} 

echo "<div style=\"clear:both;\"></div><div class=\"footer\" style=\"position: fixed;bottom: 0;width: 100%;left:0;\"> 
    <a href=\"home.php\" title=\"Ga terug\" class=\"col-xs-6 col-sm-6 btn btn-info\"><span class=\"glyphicon glyphicon-chevron-left\"></span> Niets toevoegen</a> 
    <button class=\"col-xs-6 col-sm-6 btn btn-danger\" type=\"submit\" name=\"btnNaruci\" id=\"btnNaruci\"> 
     Leg in winkelmand <span class=\"glyphicon glyphicon-chevron-right\"></span><span class=\"glyphicon glyphicon-chevron-right\"></span><span class=\"glyphicon glyphicon-chevron-right\"></span> 
    </button> 
</div>"; 

?> 

Я хочу, чтобы получить следующий вывод:

<h1>Type of the shops</h1><br /> 
 
<h3>The name of the first shop</h3> 
 
<ul> 
 
    <li>Product from the first shop</li> 
 
    <li>Product from the first shop</li> 
 
</ul><br /> 
 
<h3>The name of the second shop</h3> 
 
<ul> 
 
    <li>Product from the second shop</li> 
 
    <li>Product from the second shop</li> 
 
</ul><br /><br /> 
 

 
<h1>Type of the shops</h1><br /> 
 
<h3>The name of the next shop</h3> 
 
<ul> 
 
    <li>Product from shop</li> 
 
    <li>Product from shop</li> 
 
</ul><br /> 
 
<h3>The name of the new shop</h3> 
 
<ul> 
 
    <li>Product from the new shop</li> 
 
    <li>Product from the new shop</li> 
 
</ul>

Но мой код я получаю следующий:

<div>Type of the shops</div> 
 
<div>The name of the first shop</div> 
 
<div>Product from the first shop</div><br /> 
 

 
<div>Type of the shops</div> 
 
<div>The name of the first shop</div> 
 
<div>Product from the first shop</div><br /> 
 

 
<div>Type of the shops</div> 
 
<div>The name of the first shop</div> 
 
<div>Product from the first shop</div><br />

Таким образом, я хочу показать все продукты из того же магазина ниже имени этого магазина. Теперь я получаю для каждого продукта название магазина и тип магазина.

Надеюсь, я смог хорошо объяснить.

Заранее за вашу помощь.

+0

Этот код может быть уменьшен с помощью инструкции 'JOIN'. Но если вы хотите сохранить свой текущий формат, вам нужно сохранить имя своего магазина, т.е. '$ redShop [" naam "]' переменной, и только эхо, если это не текущее значение. например, '$ currentShop = ''; ... if ($ redShop ["naam"]! = $ currentShop) {echo $ redShop ["naam"]; $ currentShop = $ redShop ["naam"];} '. – Sean

+0

Спасибо за ответ.Я собираюсь попробовать это. – Boky

ответ

1

Благодаря @Sean.

<?php 

    $rezOrders = mysqli_query($kon, "SELECT * FROM orders WHERE user_id = ". $user_id ." AND status = 0 ORDER BY id DESC LIMIT 1"); 
    $redOrders = mysqli_fetch_assoc($rezOrders); 


    $rez = mysqli_query($kon, "SELECT product_shop_tt.*, shops.*, shops.naam as shopNaam, producten.*, producten.naam as prodNaam, order_details.*, type.*, type.naam as typeNaam 
           FROM order_details INNER JOIN product_shop_tt ON order_details.product_shop_tt_id = product_shop_tt.id 
           INNER JOIN shops ON shops.id = product_shop_tt.shop_id 
           INNER JOIN producten ON producten.id = product_shop_tt.product_id 
           INNER JOIN type ON type.id = shops.type_id 
           WHERE order_id = ". $redOrders["id"] .""); 

    $currentType = ""; 
    $currentShop = ""; 
    while($red = mysqli_fetch_assoc($rez)){ 
     if ($red["typeNaam"] != $currentType){ 
       echo "Type : " . $red["typeNaam"] . "<br />"; 
       $currentType = $red["typeNaam"]; 
      } 
     if ($red["shopNaam"] != $currentShop){ 
       echo "Shop : " . $red["shopNaam"] . "<br />"; 
       $currentShop = $red["shopNaam"]; 
      } 
       echo "Product : " . $red["prodNaam"] . "<br />"; 
     } 
?> 

Это код, который делает то, что мне нужно.

Большое спасибо @Sean! Cheers

Смежные вопросы