mysql表中的echo类别和子类别

时间:2016-06-20 00:55:47

标签: php mysql

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

我有这个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>';
    }}
?>

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

enter image description here

1 个答案:

答案 0 :(得分:0)

问题在于您在嵌套子类<h3>循环内回显主要类别while。简单的解决方法是将其移动到外部主要类别while循环中。

你也在你的嵌套循环中重用$row变量,这很邋and并且可能导致混乱。为了清晰起见,我已将这两个变量重命名为$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>';
  }
}