-2

这是我正在做的我有两个表一个是类别,另一个是软件

类别表看起来像这样

cid      name
1        Anti-malware

和软件表看起来像这样

id       title     catid
1        Avast        1

而 catid 等于 cid 你可以说 catid 是类别的 id

这是我当前的代码

 require('config/db.php');
 $cateq="SELECT * FROM softwares A INNER JOIN categories B ON A.catid=B.cID "; 
  $cateresult=mysql_query($cateq);


    define('MAX_TITLES_PER_CAT',5);

    $cat='';
    $tcount=0;
    while ($row =mysql_fetch_array($cateresult)){
                    $title=$row['title'];
                    $softid=$row['id'];
                    $cateid=$row['cid'];
                    $check_pic = "admin/images/icons/".$softid."/image01.jpg";

                    if (file_exists($check_pic)) {
                          $icon = "<img src=\"$check_pic\" class=\"home_icon\"    />"; 
                             } else {
                              $icon = "<i class=\"icon-archive\"></i>"; 
                               }

                    if ($row['name']!=$cat) {

                            if ($cat!='') echo '</div>';
                             $cat=$row['name'];
                               $tcount=MAX_TITLES_PER_CAT;
                                echo "<div class=\"widget white_box\"><h3 class=\"widget_title\"><a href=\"categories.php?cid=$cateid\">".$cat." <i class=\"icon-chevron-right\"></i></a></h3><ul>";
                                }


                      if ($tcount--<=0) continue;
                      echo '<li>'.$icon.' <a href=\'software-profile.php?pid='.$softid.'\'>'.$title.'</a></li>';


                       }  
                    if ($cat!='') echo '</ul></div>';

这是我得到的结果 http://postimg.org/image/d7zn2k6ev/full/ 它在不同的 div 中重复某些类别,而不是在同一个 div 中显示所有结果。

4

1 回答 1

0

解析查询结果时,假设行按类别 ( if ($row['name']!=$cat)) 排序,但没有ORDER BY子句就无法保证顺序。

添加ORDER BY name到查询的末尾。

于 2013-07-30T17:38:49.013 回答