我想在首页 Php Mysql 上按类别查看产品

Posted

技术标签:

【中文标题】我想在首页 Php Mysql 上按类别查看产品【英文标题】:I would like to view the products by category on the home page Php Mysql 【发布时间】:2021-12-28 10:42:26 【问题描述】:

这样我得到:

第 1 类

产品

第 1 类

产品

第 2 类

产品

等等……

这是我的新查询:

<?php
$oldcat = "";
$sql_cat = "SELECT coupons_category.category_id, coupons_category.category_name, coupons_coupons.coupon_category, coupons_coupons.coupon_name, coupons_coupons.prezzo_reale, coupons_coupons.coupon_realvalue, coupons_coupons.acconto,coupons_coupons.gratis,coupons_coupons.coupon_startdate,coupons_coupons.coupon_image,coupons_coupons.coupon_enddate, coupons_coupons.meta_title,coupons_coupons.coupon_id  FROM coupons_category LEFT JOIN coupons_coupons ON coupons_category.category_id=coupons_coupons.coupon_category ORDER BY coupons_category.category_name";
$result_cat = mysqli_query($conn, $sql_cat);
if (mysqli_num_rows($result_cat) > 0) 
    while($row_cat = mysqli_fetch_assoc($result_cat)) 
    if ($oldcat != $row_cat['category_id'] ) 
    if ($oldcat != "") echo "<br />"; 
    echo "".$row_cat['category_name']."<br />";
    echo "". $row_cat['coupon_name']."";
    $oldcat = $row_cat['category_id'];
           

【问题讨论】:

我会使用单个查询来检索所有项目,按类别排序,加入类别表以获取名称,并在循环显示它们时,检查类别是否已更改自从我展示的最后一个。如果有,则显示新的类别名称。我不使用 mysqli,但在您使用前一个查询的所有结果之前,我已经阅读了使用第二个查询的一些困难 - 如果这确实是一个问题,也许这会影响事情。 另外,如果您只想使用结果中的一列,请不要执行“SELECT *”。 (这可能只是在此示例中,也许您在已编辑的地方使用了其余的产品详细信息。) 我已经尝试过 JOIN,但我没有得到想要的结果。我想要:1Category 和 1st Category 的产品,2Category 和 2nd 类别的产品等...你有什么想法吗? 正如我所说,您可以通过加入轻松完成所需的工作。我会把它写成答案,这样我就可以把伪代码放在正确的布局中。 【参考方案1】:

我认为您需要进行一次查询,并检查循环代码中的类别何时发生变化。比如:

$oldcat = "";
$q = "select * from product where status = 'A' left join category on category.category_id = product.category order by category";
; execute the query
; while $row = mysqli_fetch_assoc($result)  
  if ($oldcat != $row['category'] ) 
    if ($oldcat != "") echo "<br />"; 
    echo $row['category.category_name'] . "<br />";
    
  echo $row['product_name'];
  $oldcat = $row['category'];
  

那是伪代码,所以我错过了所有不相关的部分,比如执行查询、检查它是否有效、转换产品名称等等。但想法是每次检索一行时,检查类别是否发生变化,如果发生变化,则显示新的类别名称。

【讨论】:

谢谢!我听从了您对 JOIN 的建议,现在它工作正常。祝你一切顺利! 太好了,很高兴它对你有用。 Ops...我以为我解决了,但它还是重复了类别名称 好吧,发布你的代码。没看到就忍不住了。编辑您的原始问题,或发布一个新问题。 我在上面发布了新代码,上面有原始字段和表的名称。 coupons_category = 类别和 coupons_coupons = 产品

以上是关于我想在首页 Php Mysql 上按类别查看产品的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 和 PHP 中显示所有产品的所有类别?

PHP Pinnacle Cart PDO MySQL:产品类别

无法在 magento 2.4.3 中查看类别下的产品

MySQL / PHP - 多层类别结构

从 osCommerce 中的类别中列出随机产品

使用 Mysql 和 Codeigniter 连接 4 个表