2010-02-16 3 views
1

메뉴 항목 사이에 구분자로 이미지를 넣으려고하고 있지만 외부에는 표시하지 않으려 고합니다. 결국 이런 식으로 끝날 것입니다 :PHP의 메뉴 항목 사이에 분리자를 추가하는 방법 (끝 부분이 아님)

홈 | 정보 | 연락처

불행히도 내 코드는 마지막 항목을 포함하여 모든 항목마다 하나씩 넣습니다.

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); 

감사

답변

0
$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"); 
    } 
+0

고마워요 ...이게 내가 찾고 있었던거야! – dmschenk

2

쉬운 솔루션은 특별한 경우 마지막 반복 또는 첫 번째 중 하나이다. 첫 번째 방법은 일반적으로 더 쉽습니다 : $ first = true를 루프 외부에서 루프 내부에 설정합니다 : if (! $ first) {print 'separator'; }.

+0

나는 이것이 가장 우아한 방법이라고 말하고 싶습니다. –

0

mysql_num_rows()를 사용하여 결과 집합에서 행 수를 얻고 결과에 대해 일부 논리를 작성할 수 있습니다.

0

또 다른 답 :

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; 
    } 

} 
+2

이제 모든 반복에서 행의 수를 요청하고 있습니다. 이는 낭비입니다. – djc

4

는 또한 배열을 구축하고 당신이 그것을 밖으로 인쇄 할 때 내파를 사용할 수 있습니다. 또한보기에서 데이터베이스 모델을 조금 더 잘 분리합니다.

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"; 

물론 태그는 내부 대신에 리튬으로 끝나지 만, 리튬을 인라인으로 만들기 때문에 작동한다고 생각합니다.