메뉴 읽어 올때 서브메뉴가 있는지 먼저 알수 있는 방법은? 채택완료
jakekwak
11년 전
조회 5,561
아래는 그누보드 5에서 메뉴를 읽어오는 부분인데, g5_menu에서 me_code가 2개인 것을 먼저 읽고, 각각의 $row[me_code]와 매칭되는 서브 메뉴를 sql로 읽어오는 형태인데요.. 먼저 메뉴를 뿌리기전에 서브 메뉴가 있는 것을 파악하는 방법이 있을까요?
그래야 서브 메뉴가 있는 곳은 조금 다르게 html을 구성할려고 합니다..
html과 sql이 섞여 있다 보니 어렵네요
</p><p> <nav id="gnb"></p><p> <h2>메인메뉴</h2></p><p> <ul id="gnb_1dul"></p><p> <?php</p><p> $sql = " select *</p><p> from {$g5['menu_table']}</p><p> where me_use = '1'</p><p> and length(me_code) = '2'</p><p> order by me_order, me_id ";</p><p> $result = sql_query($sql, false);</p><p> $gnb_zindex = 999; // gnb_1dli z-index 값 설정용</p><p> </p><p> for ($i=0; $row=sql_fetch_array($result); $i++) {</p><p> ?></p><p> <li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>"></p><p> <a href="<?php echo $row['me_link']; ?>" target="_<?php echo $row['me_target']; ?>" class="gnb_1da"><?php echo $row['me_name'] ?></a></p><p> <?php</p><p> $sql2 = " select *</p><p> from {$g5['menu_table']}</p><p> where me_use = '1'</p><p> and length(me_code) = '4'</p><p> and substring(me_code, 1, 2) = '{$row['me_code']}'</p><p> order by me_order, me_id ";</p><p> $result2 = sql_query($sql2);</p><p> </p><p> for ($k=0; $row2=sql_fetch_array($result2); $k++) {</p><p> if($k == 0)</p><p> echo '<ul class="gnb_2dul">'.PHP_EOL;</p><p> ?></p><p> <li class="gnb_2dli"><a href="<?php echo $row2['me_link']; ?>" target="_<?php echo $row2['me_target']; ?>" class="gnb_2da"><?php echo $row2['me_name'] ?></a></li></p><p> <?php</p><p> }</p><p> </p><p> if($k > 0)</p><p> echo '</ul>'.PHP_EOL;</p><p> ?></p><p> </li></p><p> <?php</p><p> }</p><p> </p><p> if ($i == 0) { ?></p><p> <li id="gnb_empty">메뉴 준비 중입니다.<?php if ($is_admin) { ?>
<a href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">관리자모드 > 환경설정 > 메뉴설정</a>에서 설정하실 수 있습니다.<?php } ?></li></p><p> <?php } ?></p><p> </ul></p><p> </nav> </p><p>
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
11년 전
//대메뉴 구하기
$bmenu = array();
$mmenu = array();
$sql = " SELECT COUNT(me_id) AS cnt {$g5['menu_table']} WHERE me_use = '1' and length(me_code) = '2' ";
$bmenuCnt = sql_fetch($sql);
$bmenu['cnt'] = $bmenuCnt['cnt']; //대메뉴 개수구하기
$sql = " select * from {$g5['menu_table']} where me_use = '1' and length(me_code) = '2' order by me_order, me_id ";
$result = sql_query($sql);
for($i=0; $row=sql_fetch_array($result); $i++)
{
$bmenu[$i] = $row;
//2단메뉴 구하기
$sql2 = " select count(me_id) AS cnt from {$g5['menu_table']} where me_use = '1' and length(me_code) = '4' and substring(me_code, 1, 2) = '{$row['me_code']}' ";
$mmenuCnt = sql_fetch($sql2);
$mmenu[$i]['cnt'] = $mmenuCnt['cnt'];
$sql2 = " select * from {$g5['menu_table']} where me_use = '1' and length(me_code) = '4' and substring(me_code, 1, 2) = '{$row['me_code']}' order by me_order, me_id ";
$result2 = sql_query($sql2);
for($j=0; $row2=sql_fetch_array($result2); $j++)
{
$mmenu[$i][$j] = $row2;
}
}
for($i=0; $i<$bmenu['cnt']; $i++)
{
if($mmenu[$i]['cnt'] > 0)
{
?>
<li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>">
<a href="<?php echo $mmenu[$i][0]['me_link']; ?>" target="_<?php echo $mmenu[$i][0]['me_target']; ?>" class="gnb_1da"><?php echo $mmenu[$i][0]['me_name'] ?></a>
<?
}else
{
?>
<li class="gnb_1dli" style="z-index:<?php echo $gnb_zindex--; ?>">
<a href="<?php echo $bmenu[$i]['me_link']; ?>" target="_<?php echo $bmenu[$i]['me_target']; ?>" class="gnb_1da"><?php echo $bmenu[$i]['me_name'] ?></a>
<?
}
for($j=0; $j<$mmenu[$i]['cnt']; $j++)
{
if($mmenu[$i]['cnt'] > 0)
{
?>
<li class="gnb_2dli"><a href="<?php echo $mmenu[$i][$j]['me_link']; ?>" target="_<?php echo $mmenu[$i][$j]['me_target']; ?>" class="gnb_2da"><?php echo $mmenu[$i][$j]['me_name'] ?></a></li>
<?
{
}
}
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인