Advertisement
michaelyuen

Untitled

Apr 15th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.51 KB | None | 0 0
  1. <?php
  2.     include 'mydb.php';
  3.     $db = new DB;
  4.     $result = $db->table('menu')->select('*')->results();
  5.        
  6.     function buildMenu($array) {
  7.         $refs = [];
  8.         foreach ($array as $data) {
  9.             $thisref = &$refs[ $data->id ];
  10.             $thisref['id'] = $data->id;
  11.             $thisref['parent_id'] = $data->parent_id;
  12.             $thisref['name'] = $data->name;
  13.             if ($data->parent_id == 0) {
  14.                 $list[ $data->id ] = &$thisref;
  15.             } else {
  16.                 $refs[ $data->parent_id ]['children'][ $data->id ] = &$thisref;
  17.             }
  18.         }
  19.         return $list;
  20.     }
  21.    
  22.     function listMenu($list) {
  23.         // echo '<pre>', print_r($list), '</pre>';
  24.         if (is_array($list)) {
  25.             $html = '<ul>';
  26.             foreach ($list as $item) {
  27.                 $html .= '<li><a href="item.php?id='. $item['id'] .'">' . $item['name'] . '</a>';
  28.                 if (!empty($item['children'])) {
  29.                     $html .= listMenu($item['children']);
  30.                 }
  31.                 $html .= '</li>';
  32.             }
  33.             $html .= '</ul>';
  34.         }
  35.         return $html;
  36.     }
  37.    
  38.     echo '<pre>', print_r($list = buildMenu($result)) , '</pre>';
  39.    
  40.    
  41. ?>
  42. <!DOCTYPE html>
  43. <head>
  44. <title>Menu List</title>
  45. <meta charset="UTF-8">
  46. </head>
  47. <style>
  48.     * {
  49.         margin: 0;
  50.         padding: 0;
  51.         box-sizing: border-box;
  52.     }
  53.     ul {
  54.         display: block;
  55.         width: 100%;
  56.         list-style: none;
  57.     }
  58.     ul > li {
  59.         display: inline-block;
  60.         padding: 5px 15px;
  61.         float: left;
  62.     }
  63.    
  64.     ul > li > ul {
  65.         display: inline-block;
  66.         width: 100%;
  67.     }
  68.    
  69.     ul > li > ul li {
  70.         width: 100%;
  71.         float: none;
  72.     }
  73. </style>
  74. <body>
  75.     <div class="nav">
  76.         <ul>
  77.             <?php echo listMenu($list); ?>
  78.         </ul>
  79.     </div>
  80. </body>
  81. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement