dty47696 2015-11-25 20:16
浏览 15
已采纳

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

I am Trying to make a drop down menu, and list multiple items as well.

like for example: here is my database: enter image description here

if you see in that image you can see only one of the rows have a parent if i want multiple rows to have a parent of 'Far Far Away123' it only shows one of the items

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

Thanks

  • 写回答

2条回答 默认 最新

  • dongxian5735 2015-11-25 20:33
    关注

    It is because you add only one.

    You have a foreach searching all pages for subitems and remember only one of them for the latter 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
    

    By the way, it would be better to start with the function giving build_dropdown($parent = 'none', $pages)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错