2014-02-05 5 views
0

내 메뉴에 삼항 연산자를 추가하는 데 여전히 문제가 있습니다. menuID와 페이지 id가 같으면 class = active를 li 태그에 추가하는 것이 목적입니다. pageID는 thisPage라는 var에 저장되어 있으므로 thisPage와 menuID가 같으면 class 태그를 가져와야합니다.동적 드롭 다운 메뉴의 삼항 연산자

내가 문제를

내가 함께 문제가 코드의 라인을 결정하는 데 도움이 할 수있는 코드와 PHP는 덤프를 포함 시켰습니다

는 & /// 메인 메뉴 섹션을 시작 /// 서브 메뉴에서 삼항 연산자입니다

($thisPage==$sval['menuID'] ? ' class="active"' : '') 

와 나는 "$의 sval이 [ 'menuId와는']" 문제라고 생각합니다.

<?php 

$ this = 3; //

$sql = "SELECT menuID, menuTitle, menuURL, menuParentID, menuOrderID FROM menu ORDER BY menuParentID, menuOrderID ASC"; 
    $items = mysql_query($sql); 
    while ($obj = mysql_fetch_object($items)) { 
     if ($obj->menuParentID == 0) { 
      $parent_menu[$obj->menuID]['menuID'] = $obj->menuID; 
      $parent_menu[$obj->menuID]['menuTitle'] = $obj->menuTitle; 
      $parent_menu[$obj->menuID]['link'] = $obj->menuURL; 
     } else { 
      $sub_menu[$obj->menuID]['menuID'] = $obj->menuID; 
      $sub_menu[$obj->menuID]['parent'] = $obj->menuParentID; 
      $sub_menu[$obj->menuID]['menuTitle'] = $obj->menuTitle; 
      $sub_menu[$obj->menuID]['link'] = $obj->menuURL; 
      if (!isset($parent_menu[$obj->menuParentID]['count'])) { 
       $parent_menu[$obj->menuParentID]['count'] = 0; 
      } 
      $parent_menu[$obj->menuParentID]['count']++; 
     } 
    } 

    mysql_free_result($items); 


    function create_menu($parent_array, $sub_array, $qs_val = "menu", $main_id = "nav", $sub_id = "dropdown-menu", $dd_style = "dropdown") 
    { 
     $menu = "<ul class=\"{$main_id}\">\n"; 

     foreach ($parent_array as $pkey => $pval) { 
      if (! empty($pval['count'])) { 

          //DROP-DOWN MENUS 
       $menu .= "\t<li class=\"{$dd_style}\"><a href=\"{$pval['link']}\" class=\"dropdown-toggle\" data-toggle=\"$dd_style\">{$pval['menuID']} - {$pval['menuTitle']}<b class=\"caret\"></b></a>\n"; 
       $menu .= "\t\t<ul class=\"{$sub_id}\">\n"; 

       foreach ($sub_array as $sval) { 
        if ($pkey == $sval['parent']) { 

///////////////////////////////////////SUB MENUS 
         $menu .= "\t\t\t<li" . ($thisPage==$sval['menuID'] ? ' class="active"' : '') . "><a href=\"{$sval['link']}\">{$sval['menuID']} - {$sval['menuTitle']}</a></li>\n"; 
        } 
       } 
       $menu .= "</ul></li>\n"; 
      } else { 

////////////////////////MAIN MENUS 
       $menu .= "\t<li" . ($thisPage==$pval['menuID'] ? ' class="active"' : '') . "><a href=\"{$pval['link']}\">{$pval['menuID']} - {$pval['menuTitle']}</a></li>\n"; 
      } 
     } 

     return $menu . "</ul>\n"; 
    } 

    ?> 
    <?php 
    echo create_menu($parent_menu, $sub_menu, "menu", "nav", "dropdown-menu"); 
    ?> 


    //////////////////////////////// 
    //////////// PHP DUMP/////////// 
    //////////////////////////////// 

    //PAGE QUERY 
     [query_rsPageContent] => SELECT * FROM pages WHERE pageID = 3 
     [rsPageContent] => Resource id #4 
     [row_rsPageContent] => Array 
      (
       [pageID] => 3 
       [menuParentID] => 0 
       [pageRbnTitle] => Ministries 
       [pageTitle] => Ministries 
       [pageContent] => Ministries Content 
       [pageDescripition] => 
       [pageKeywords] => 
      ) 

     [totalRows_rsPageContent] => 1 

     [thisPage] => 3 

    //MENU QUERY 
     [sql] => SELECT menuID, menuTitle, menuURL, menuParentID, menuOrderID FROM menu ORDER BY menuParentID, menuOrderID ASC 
     [items] => Resource id #7 
     [obj] => 
     [parent_menu] => Array 
    (
     [1] => Array 
      (
       [menuID] => 1 
       [menuTitle] => Title 1 
       [link] => 1.php 
      ) 

     [2] => Array 
      (
       [menuID] => 2 
       [menuTitle] => Title 2 
       [link] => # 
       [count] => 1 
      ) 

     [3] => Array 
      (
       [menuID] => 3 
       [menuTitle] => Title 3 
       [link] => 3.php 
      ) 
) 
$thisPage
+0

'$ parent_menu'의 덤프에서 어떤 메뉴 항목에 대해서도'menuID' 키가 보이지 않습니다. –

+0

죄송합니다. 나쁘게 ... 죄송합니다. 실수로 그 내용을 지 웠습니다 ... 이제 다시 돌려 드리겠습니다. – dmschenk

+0

$ thisPage는 문제가 아닙니다 ... {$ sval [ 'menuID']} & {$ pval [ 'menuID']}를 두 번째 인수로 삼자로 변환합니다. 삼항 연산자 {$ sval [ 'menuID']}의 바깥 쪽은 잘 동작합니다. – dmschenk

답변

0

create_menu 함수의 문맥에서 알려져 있지 않다. 인수로 전달하거나 꼭 필요한 경우 global $thisPage을 사용하십시오.

+0

글로벌 $ thisPage 추가; create_menu 함수에 트릭을했다! 도와 주셔서 감사합니다. – dmschenk

+0

내가 이해하려고하는 한가지는 수동으로 $ thisPage = 3을 설정하고 $ obj와 같은 변수를 3 진수 연산자에 넣으면 모든 메뉴 항목이 클래스 = 활성을 얻는다는 것입니다. 배열을 추가했지만 여전히 클래스를 추가했습니다. 배열에 3이 들어 있었기 때문입니까? – dmschenk

+0

삼항 연산자 사용법을보아야하지만 그것은 단지'if' 문입니다. –