【问题标题】:echo Categories and Subcategories from mysql table从 mysql 表中回显类别和子类别
【发布时间】:2016-06-20 00:55:46
【问题描述】:

我有这个问题,我有一个“产品表”,它包含产品描述、价格、类别、子类别和其他几行。

我有这个 php 块,它应该检索和回显带有类别和子类别的动态手风琴并修剪重复项。

我觉得我很近,但我可能在几英里之外..

<?php
    $sql = mysql_query("SELECT DISTINCT category FROM products");
    while($row = mysql_fetch_array($sql)) {
    $category = $row['category'];

    $sql2 = mysql_query("SELECT DISTINCT subcategory FROM products WHERE category = '$category'");
    while($row = mysql_fetch_array($sql2)) {
    $subcategory = $row['subcategory'];
    echo '<h3><a href="#">'.$category.'</a></h3>
            <div>
             <p><a href="#">'.$subcategory.'</a></p>
            </div>';
    }}
?>

问题是我得到了重复的类别..

【问题讨论】:

  • 通过你自己的代码,一个给定的分类可以有多个子分类,每个子分类可能出现同一个父分类。您想在这里实现什么目标?
  • 是的,我怕我解释得不好..每个类别一次,子类别在..下又一次..
  • stop using mysql_* functionsThese extensions 已在 PHP 7 中删除。了解PDOMySQLiprepared 语句并考虑使用 PDO,it's really pretty easy
  • @TimBiegeleisen 是的,我担心我没有解释清楚.. 每个类别一次,子类别下.. 再一次..
  • 我很难说这是 SQL 问题还是 PHP 代码表示层的问题。

标签: php mysql


【解决方案1】:

问题是您在嵌套的子类别 while 循环中回显了主要类别 &lt;h3&gt;。简单的解决方法是将其移到外部主类别 while 循环中。

您还在嵌套循环中重用了$row 变量,这很草率并且可能导致混淆。为了清楚起见,我将这两个变量分别重命名为 $rowCategory$rowSubCategory

<?php
$sql = mysql_query("SELECT DISTINCT category FROM products");
while($rowCategory = mysql_fetch_array($sql)) {
  $category = $rowCategory['category'];
  // move main categories up and out here
  echo '<h3><a href="#">'.$category.'</a></h3>';

  $sql2 = mysql_query("SELECT DISTINCT subcategory FROM products WHERE category = '$category'");
  while($rowSubCategory = mysql_fetch_array($sql2)) {
  $subcategory = $rowSubCategory['subcategory'];
  // just echo subcategories here
  echo '<div>
          <p><a href="#">'.$subcategory.'</a></p>
        </div>';
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多