Foreach循环使用MySQL查询?

时间:2011-04-21 14:41:36

标签: php loops foreach

我之前遇到过这个问题,但我没有问过,因为我找到了一个工作,但是这次我不太幸运。

我正在尝试为每个“pg.pcat”(页面类别)创建一个简单的列表,以显示每个类别的5个最新链接(我知道我没有添加LIMITORDER BY )。

$q2 = "
SELECT pg.pcat, p.page_id, p.link_title 
FROM pages AS P 
INNER JOIN page_categories AS pg ON pg.pc_id = $sidenav
";

$r2 = @mysqli_query ($dbc, $q2); // Run the Query.  

while ($qarr = mysqli_fetch_array($r2, MYSQLI_ASSOC)) {
    if(!isset($printed)) { 
        echo "<div class=\"sideNavSpan\">{$qarr['pcat']}</div>";
        $printed = true;
    }
    echo "
    <li>
     <a href=\"page.php?pid={$qarr['page_id']}\">{$qarr['link_title']}</a>
    </li>
    ";
}

我需要这样的东西,但我无法弄清楚如何对$qarr中的值使用for循环。

----pg.pcat1
p.link_title
p.link_title
p.link_title
p.link_title
p.link_title

----pg.pcat2
p.link_title
p.link_title
p.link_title
p.link_title
p.link_title

----pg.pcat3
p.link_title
p.link_title
p.link_title
p.link_title
p.link_title

等。 救命?拜托,谢谢你:)

1 个答案:

答案 0 :(得分:1)

您需要在SQL查询中通过pg.pcat进行排序,并将其全部包含在if测试中,以确保至少返回了一行

$currCat = '';
$printed = false;
while ($qarr = mysqli_fetch_array($r2, MYSQLI_ASSOC)) {     
   if($currCat != $qarr['pcat']) {  // category has changed
      if ($printed) { // we already printed an opening <ul> so we need to close it
         echo '</ul>';
         $printed = true;
      }
      echo"<div class=\"sideNavSpan\">{$qarr['pcat']}</div><ul>";
      $currCat = $qarr['pcat'];
   }
   echo "<li><a href=\"page.php?pid={$qarr['page_id']}\">{$qarr['link_title']}</a></li>";
}
echo '</ul>';