Цикл Foreach с использованием MySQL Query? - PullRequest
1 голос
/ 21 апреля 2011

Я столкнулся с этой проблемой ранее, но я не спрашивал ее, потому что нашел работу, но в этот раз мне не так повезло.

Я пытаюсь создать простой список для каждого "pg.pcat" (категория страницы), чтобы показать 5 последних ссылок из каждой категории (я знаю, что я не добавил LIMIT или ORDER 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>
    ";
}

Мне нужно что-то подобное, но я не могу понять, как использовать цикл for для значений в $qarr.

----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 Ответ

1 голос
/ 21 апреля 2011

Вам нужно будет упорядочить по pg.pcat в своем запросе SQL и обернуть все это в тест 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>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...