Как добавить разделитель между пунктами меню в PHP, но не в конце - PullRequest
1 голос
/ 16 февраля 2010

Я пытаюсь поместить изображение в качестве разделителя между пунктами меню, но не снаружи, и я не уверен, как это сделать .. Так что в итоге это будет примерно так:

ГЛАВНАЯ | О | КОНТАКТ

к сожалению, мой код ставит один после каждой записи, включая последнюю.

mysql_select_db($database_db_connection, $db_connection);
$query_rsMenu = "SELECT * FROM menu WHERE online = 1 ORDER BY position ASC";
$rsMenu = mysql_query($query_rsMenu, $db_connection) or die(mysql_error());

echo "<ul class='MenuBarVertical'>\n";
    while($row_rsMenu = mysql_fetch_assoc($rsMenu)) {
    echo ("   <li><a href=\"../" . $row_rsMenu['menuURL'] . "\">" . $row_rsMenu['menuName'] . "</a> <img src='SiteFiles/Site/separator.jpg' /> </li>\n");
    }
echo "</ul>\n";

mysql_free_result($rsMenu);

Спасибо

Ответы [ 5 ]

4 голосов
/ 16 февраля 2010

Вы также можете создать массив и использовать implode при его распечатке. Это также лучше отделяет модель базы данных от представления.

mysql_select_db($database_db_connection, $db_connection);
$query_rsMenu = "SELECT * FROM menu WHERE online = 1 ORDER BY position ASC";
$rsMenu = mysql_query($query_rsMenu, $db_connection) or die(mysql_error());

$array = array();
while($row_rsMenu = mysql_fetch_assoc($rsMenu)) {
    $array[] = "<li><a href=\"../" . $row_rsMenu['menuURL'] . "\">" . $row_rsMenu['menuName'] . "</a></li>\n";
}

mysql_free_result($rsMenu);

echo "<ul class='MenuBarVertical'>\n";
echo implode(' <img src="SiteFiles/Site/separator.jpg" /> ', $array);
echo "</ul>\n";

Конечно, теги оказываются между li, а не внутри, но так как вы делаете li inline, я думаю, что это будет работать.

2 голосов
/ 16 февраля 2010

Простое решение для частного случая - либо последняя итерация, либо первая.Первый обычно проще: установите $ first = true вне цикла, внутри цикла: if (! $ First) {print 'separator';}.

0 голосов
/ 16 февраля 2010

Еще один ответ:

for ($i = 1; $i <= mysql_num_rows($rsMenu); $i++) {

  $row_rsMenu = mysql_fetch_assoc($rsMenu);
  // do something;

  if ($i == mysql_num_rows($rsMenu) - 1) {
    // this is the last element, do something;
  }

}
0 голосов
/ 16 февраля 2010

Вы можете использовать mysql_num_rows (), чтобы получить количество строк из набора результатов и построить некоторую логику для результата.

0 голосов
/ 16 февраля 2010
$count = 0;
$dbRows = mysql_num_rows($rsMenu);
while($row_rsMenu = mysql_fetch_assoc($rsMenu)) {
    $count++;
    echo ("   <li><a href=\"../" . $row_rsMenu['menuURL'] . "\">" . $row_rsMenu['menuName'];
    if($count < $dbRows)
      echo ("</a> <img src='SiteFiles/Site/separator.jpg' /> </li>\n");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...