PHP - 下拉不显示mysql中的所有项目

时间:2015-11-25 20:16:16

标签: php html mysql

我正在尝试制作一个下拉菜单,并列出多个项目。

例如: 这是我的数据库: enter image description here

如果您在该图片中看到,您可以看到只有其中一行拥有父级,如果我希望多行的父级为“远远的远”123'它只显示其中一个项目

<?php

  function build_dropdown ($parent, $pages){
  $items = "";
    foreach($pages as $page){
    // $items = "";
  if($page['parent'] == $parent){
    $items = $page;
  } // END if
    } // END foreach

    if(is_array($items)){ // If a sub 
      echo '<ul id="sub_menu" class="sub_navagation'. $items['id'] .'">';
        echo '<li>'.$items['page_name'].'</li>';
      echo '</ul>'; 
    } // END if 
  }// End Function

  $sql = "SELECT * FROM pages ORDER by item_order";
  $result = mysqli_query($db, $sql);
  confirm_query($result);

  while ($row = mysqli_fetch_assoc($result)) {
    $pages[] = $row; // Add each row to $pages array to use later
  }


  foreach($pages as $key => $page){

    if($page['parent'] == 'none'){ ?>

      <li id = "<?php echo $page['id']; ?>">
        <a href="page.php?id=<?php echo $page['id']; ?>" title="<?php echo     $page['page_title']; ?>">
          <?php echo $page['page_name']; ?>
        </a>
        <?php  ?>


<?php 
    } // END if
    build_dropdown($page['page_name'], $pages); // If there are child items     then build them out
echo "</li> ";
  } // END foreach
?>

由于

2 个答案:

答案 0 :(得分:2)

这是因为你只添加了一个。

你有一个foreach在所有页面中搜索子项目,并且只记住其中一个用于后者if (is_array())

function build_dropdown($parent, $pages)
{
    // item is an array
    $items = array();
    foreach($pages as $page) {
        if ($page['parent'] == $parent) {
            // add an element to the array
            $items[] = $page;
        } // END if
    } // END foreach
    if ($items) {
        echo '<ul id="sub_menu" class="sub_navagation">';
        foreach ($items as $item) {
            echo '<li>'.$item['page_name'];
            build_dropdown($item['page_name'], $pages);
            echo '</li>';
        } // END foreach
        echo '</ul>'; 
    } // END if 
}// End Function

顺便说一句,最好从给出build_dropdown($parent = 'none', $pages)

的函数开始

答案 1 :(得分:1)

在buildDropdown()函数中尝试这个..

$items = array();

foreach($pages as $page)
{
    if($page['parent'] == $parent)
    {
        $items[] = $page;
    }
}

if (count($items) > 0)
{
    echo '<ul id="sub_menu_'.$parent.'" class="sub_navagation">';
    foreach($items as $item)
    {
        echo '<li>'.$item['page_name'].'</li>';
    }
    echo '</ul>';
}