while循环显示一种产品的类别

时间:2018-06-26 10:44:57

标签: php sql while-loop

我正尝试在image_1下方显示cat_1,并在其下方列出我的cat_1产品。下一行应为image_2,在其下方为cat_2的标题和cat_2的产品列表。 ETC。

我现在遇到的问题是echo $ output显示image_1,它下面是cat_1,只有cat_1的一种产品。下一行还是image_1,位于cat_1和cat_1的第二个产品下方。下一行是相同的,显示cat_1的第三个乘积,直到cat_1的所有乘积都经过循环,然后对cat_2开始相同。

所以我想要的是该类别的所有产品中首先显示1个类别。然后循环可以继续显示cat_2及其产品的标题。我通过创建一个功能Lunchmenu($ cat)解决了它,并从我的sql中选择* from Lunchmenu,其中category ='$ cat'并手动对类别进行硬编码。但是我想知道是否可以使用更少的代码行。有人建议使用DISTINCT,我尝试了$sql = "SELECT DISTINCT * FROM lunchmenu";,但这并没有太大改变!

这是我的show_menu.php

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$conn = mysqli_connect('***', '***', '***', '***');
$sql = "SELECT * FROM lunchmenu";
$result = $conn->query($sql) or die($conn->error);
$output = '';
while($row = $result->fetch_assoc()) {
 {
  $output .= '
            <div id="'.$row["category"].'" class="menu-category">
            <div class="menu-category-title">
            <div class="bg-image"><img src="assets/img/photos/'.$row["image"].'" alt=""></div>
            <h2 class="title">'.$row["category"].'</h2>
            </div>
            <div class="menu-category-content">
            <div class="menu-item menu-list-item">
            <div class="row align-items-center">
            <div class="col-sm-6 mb-2 mb-sm-0">
            <h6 class="mb-0">'.$row["name"].'</h6>
            <span class="text-muted text-sm">'.$row["desc"].'</span></div>
            <div class="col-sm-6 text-sm-right">
            <input type="text" name="quantity" style="width: 50px; height: 25px;" id="quantity' . $row["id"] .'" class="form-control" value="1" />
            <span class="text-md mr-4"><span class="text-muted"></span> €'.$row["price"]. '</span>
            <button class="btn btn-outline-secondary btn-sm add_to_cart" name="add_to_cart" id="'.$row["id"].' style="margin-top:5px;"><span>Add to Cart</span></button>
            </div>
            </div>
            </div>
            </div>
            </div>
  ';
 }
 echo $output;
}


?>

0 个答案:

没有答案