2017-10-24 1 views
0

트위터 부트 스트랩을 사용하여 드롭 다운 메뉴에 문제가 있습니다. 내 데이터베이스에는 범주라는 테이블이 있습니다. 그것에는 8 개의 레코드가 있습니다 :PHP와 데이터베이스로 부트 스트랩 드롭 다운

ID | Category | parent 
1 | Apple | 0 
2 | Samsung | 0 
3 | Huawei | 0 
4 | Others | 0 
5 | Sony  | 4 
6 | LG  | 4 
7 | Lenovo | 4 
8 | Nokia | 4 

이 데이터를 사용하여 navbar를 만들었습니다. 그러나 나는이 문제가 : '다른 사람'부모가 있기 때문에, 그들은 그들의 부모 드롭 다운에 나타납니다. Apple, Samsung 및 Huawei에는 자녀가 없으므로 전혀 드롭 다운하지 않기를 바랍니다. 그러나 내 코드는 이러한 범주에 대해 빈 드롭 다운을 생성합니다.

<body> 
 
<?php 
 
    $sql = "SELECT * FROM categories WHERE parent = 0"; 
 
    $pquery = $db->query($sql); 
 
    ?> 
 
    <nav class="navbar navbar-default navbar-fixed-top" id="navbar"> 
 
    <div class="container"> 
 
     <a href="/e-shop/index.php" class="navbar-brand" id="logo">Mobile e-shop</a> 
 
     <ul class="nav navbar-nav"> 
 
     <?php while($parent = mysqli_fetch_assoc($pquery)) : ?> 
 
     <?php 
 
      $parent_id = $parent['id']; 
 
      $sql2 = "SELECT * FROM categories WHERE parent = '$parent_id' "; 
 
      $cquery = $db->query($sql2); 
 
     ?> 
 

 
<!-- Drop down meniu --> 
 
     <li class="dropdown"> 
 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="text"><?php echo $parent['kategorija']; ?><span class="caret"></span></a> 
 
      <ul class="dropdown-menu" role="menu"> 
 
      <?php while($child = mysqli_fetch_assoc($cquery)) : ?> 
 
      <li> 
 
      /*I assume i should do if statement or something here to check is its null? I tryied to use is_null() but it did not work for me*/ 
 
       <a href="<?=$child['adresas']; ?>"> 
 
       <?php echo $child['kategorija'] ?> 
 
       </a> 
 
      </li> 
 
      <?php endwhile; ?> 
 
      </ul> 
 
     </li> 
 
     <?php endwhile; ?> 
 
     </ul> 
 
    </div> 
 
    </nav>

나는 문 또는 확인하는 뭔가가 null의 경우 내가해야 할 것 같은데요? 나는 is_null()을 사용하기 위해 tryied하지만 그것은 나를 위해 작동하지 않았다.

+0

잘 모르겠지만 Apple, Samsung, Huawei는 드롭 다운이없고 기타는 드롭 다운으로 표시하고 싶습니다. –

답변

1

문제점이 있습니다. 부모가없는 모든 항목을 가져와 동일한 함수를 제공합니다. 즉, 모두 부모 클래스에 할당됩니다.

기본적으로 자녀가있는 부모를 찾아 올바른 클래스를 할당해야합니다. 그래서 같이 : 내가 당신이라면 당신은 단지 HTML에서 몇 가지 변수를 호출 할 수 있도록

<?php 
    // Check if the child-query result is larger than 0 
    if(mysqli_num_rows($cquery) > 0) { 
    // Run your code for 'parents' here. 
    <li class="dropdown"> 
    </li> 
    } else { 
    // Run your code for 'noparents' here. 
    <li class="nodropdown"> 
    </li> 
    } 
?> 

, 나는 또한 깨끗한 PHP 코드에서 제표를 작성한다. 이렇게하면 코드를 훨씬 쉽게 읽을 수 있습니다. 아래 예제에서 데이터베이스 호출과 변환 코드를 한 곳에서 볼 수 있습니다. 하나를 변경하는 경우, 다른 하나를 변경해야 할 수도 있으므로 의미가 있습니다. 또한 다른 사람이 자신의 코드를 보면 훨씬 빨리 이해할 수 있습니다.

<li class="dropdown"> 
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="text"> 
     <?php echo $parent['kategorija']; ?><span class="caret"></span> 
    </a> 
    <ul class="dropdown-menu" role="menu"> 
     <?php echo get_dropdown_children(); ?> 
    </ul> 
<li> 

<?php 
function get_dropdown_children($parent['id']) { 
    $sql2 = "SELECT * FROM categories WHERE parent = '$parent_id' "; 
    $cquery = $db->query($sql2); 
    $result = ""; 

    while($child = mysqli_fetch_assoc($cquery)) { 
     $result .= "<li><a href='" . $child['adresas'] . "'>"; // Opening tags 
     $result .= $child['kategorija'];      // Content 
     $result .= "</a></li>";         // Closing tags 
    } 

    return $result; 
} 
관련 문제