繁体   English   中英

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

[英]PHP - Drop down not showing all items in mysql

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

例如:这是我的数据库: 在此处输入图片说明

如果您在该图像中看到,如果我希望多行具有“ Far Far Away123”的父级,则只能看到其中一行具有父级,它仅显示其中一项

<?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
?>

谢谢

这是因为您仅添加了一个。

您有一个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)的函数开始

在您的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>';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM