테스트 사이트 - 개발 중인 베타 버전입니다

메인메뉴 출력부분 도움좀부탁합니다 채택완료

카산 2년 전 조회 3,072

 

아래는 메인메뉴 출력소스입니다. 

  • Warning: Undefined array key "sub" in/home1/dawayo/public_html/dawayo/theme/dw_bootstrap/include/common/nav_make.phpon line36
  • 위와 같이 오류가 뜹니다.  아래 소스내용의 파일이 nav_make.php 이구요
  • 게시판에서는 오류가 안뜨고 게시판이 아닌곳에서는 위와 같은 오류가 뜹니다.(index,new 등 ---)
  • 관리자페이지에서 메뉴생설할때 그룹밑에 게시판 메뉴를 생성하지 않고 게시판만 메뉴로 생성하면 오류가 뜹니다.
  • 위 오류 중에서 line 36 은 아래 소스에서 foreach ((array) $row['sub'] as $row2) {  입니다
  • 집에 윈도우 컴에 아파치서버 설치하고 테스트하면 정상인데 리눅스 웹호스팅에 올리면 오류가 뜹니다

</p>

<p><?php

    $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, false);

        $gnb_zindex = 999999; // gnb_1dli z-index 값 설정용

        $menu_datas = array();

    for ($i = 0; $row = sql_fetch_array($result); $i++) {

        $menu_datas[$i] = $row;

        $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 ($k = 0; $row2 = sql_fetch_array($result2); $k++) {

            $menu_datas[$i]['sub'][$k] = $row2;

        }

    }

    $i = 0;

    foreach ($menu_datas as $row) {

        if (empty($row)) continue;

        if (empty($menu_datas[$i]['sub']['0'])) {?>

            <li class="nav-item" style="list-style:none;border:0px solid blue">

                <a class="text_main_menu px-4"  href="<?php echo $row['me_link']; ?>"  style="list-style:none;">

                <span  class=" fs-6  fw-bold <?php if($main_nav_bg =="yes") echo "text_main_menu" ; else echo "text_title";?> " >

                     <?php echo $row['me_name'] ?>

                </span>

                </a>

            </li>

        <?php }

        $k = 0;

        foreach ((array) $row['sub'] as $row2) {

            if (empty($row2)) continue;

            if ($k == 0) { ?>

                <li class="nav-item   dropdown " style="list-style:none">

                    <button class="dropdown-toggle border-0 px-4 <?php if($main_nav_bg =="yes") echo "main_nav_bg";else echo "m_box_container";?>"  data-bs-toggle="dropdown" aria-expanded="false">

                        <span  class=" fs-6 fw-bold <?php if($main_nav_bg =="yes") echo "text_main_menu" ; else echo "text_title";?> " >

                            <?php echo $row['me_name'] ?>

                        </span>

                    </button>

                    <ul    class="dropdown-menu mt-2 pt-3 shadow-sm border-0  animate fade-down rounded-0 <?php if($main_nav_bg =="yes") echo "main_nav_bg";else echo "m_box_container";?>" >

                        <li>

            <?php } ?>

                    <a  class="dropdown-item px-4 <?php if($main_nav_bg =="yes") echo "text_main_menu" ; else echo "text_title";?> " href="<?php echo $row2['me_link']; ?>">

                        <?php echo $row2['me_name'] ?>

                    </a>

            <?php

                $k++;

        }   //end foreach $row2

            if ($k > 0)

                        echo'</li>'. PHP_EOL;

                    echo'</ul>'. PHP_EOL;

                echo'</li>'. PHP_EOL;

                $i++;

    }   //end foreach $row

        if ($i == 0) {  ?>

            <div class="text-center mt-2 ">메뉴 준비 중입니다.

                <?php if ($is_admin) { ?>

                <a class="text-danger fw-bold" href="<?php echo G5_ADMIN_URL; ?>/menu_list.php">

                    관리자모드 &gt; 환경설정 &gt; 메뉴설정</a>에서 설정하실 수 있습니다.

                <?php } ?>

            </div>

        <?php }    else { ?>

        <?php } ?></p>

<p> </p>

<p>

 

https://dawayo.kr/ 는 오류가 출력되는 홈페이지 입니다

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
m
2년 전
foreach ((array) $row['sub'] as $row2) {

를 if( is_array($row['sub']) ) {  으로 감싸주세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

카산
2년 전
답변 감사합니다만~~~

if( is_array($row['sub']) ) {
foreach ((array) $row['sub'] as $row2) {
~~~~~~~~~~~~~~~
} //end foreach $row2
}

위 와 같이 했는데 별 반응이 없네요..어디까지 감싸야 하는 지요
m
myzone
2년 전
아,,,
if( isset($row['sub']) && is_array($row['sub']) ) {
로 해보세요,,,
저한테서 테스트하니까 되네요,,,
카산
2년 전
아래처럼 하니 되네요..~~감사합니다

댓글을 작성하려면 로그인이 필요합니다.

플라이
2년 전

$row['sub']의 데이터가 확인이 되지 않아 발생되는듯 하니

데이터가 존재하는지 확인후 foreach를 실행하시는게 좋을듯 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

카산
2년 전
$row['sub'] 의 데이타가 어떤 것인가요~~관리자메뉴에서 갤러리 게시판을 메뉴로 등록했거든요...

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인