Hierarkisk meny för sidor i databas

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
trexake



Medlem i: 4445 dagar
Från: Järfälla
Status: Offline



#724544
Inlägg Skrivet: 2012-07-17 21:43      Ämne: Hierarkisk meny för sidor i databas Citera

Hej, satt och lekte lite och gjorde en hierarkisk meny. Finns väl lite att förbättra men satt och lekte lite.

$level används inte för tillfället men den kan man ju säkert hitta på någonting bra med.

Databasstruktur:
KOD:
1:
 
2:
 
3:
CREATE TABLE IF NOT EXISTS `pages` (
4:
  `id` int(11) NOT NULL AUTO_INCREMENT,
5:
  `parent` int(11) NOT NULL DEFAULT '0',
6:
  `title` varchar(64) NOT NULL,
7:
  `link` varchar(64) NOT NULL,
8:
  `content` text NOT NULL,
9:
  `position` float NOT NULL DEFAULT '1',
10:
  PRIMARY KEY (`id`)
11:
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
12:
 
13:
 
14:
INSERT INTO `pages` (`id`, `parent`, `title`, `link`, `content`, `position`) VALUES
15:
(1, 0, 'Home', 'home', 'This is the "home" page.', 1),
16:
(2, 0, 'About me', 'about', 'This is the "About me" page.', 2),
17:
(3, 2, 'Interests', 'interests', 'This is the "Interests" page.', 1),
18:
(4, 2, 'My family', 'my-familty', 'This is the "My family" page.', 2),
19:
(5, 0, 'Services', 'services', 'This is the "Services" page.', 2.4),
20:
(6, 0, 'Contact', 'contact', 'This is the "Contact" page.', 3),
21:
(7, 4, 'My brother', 'my-brother', 'This is the "My brother" page.', 1),
22:
(8, 4, 'My sister', 'my-sister', 'This is the "My sister" page.', 2),
23:
(9, 7, 'My nephew', 'my-nephew', 'This is the "My nephew" page.', 0);
24:
 


PHP-kod:
PHP:
1:
 
2:
<?php
3:
 
4:
function generate_menu($pages '',$parent 0,$level 1) {
5:
   
6:
   if (empty($pages)) {
7:
      
8:
      $sql "select id, parent, title, link from pages order by parent, position asc";
9:
      $result mysql_query($sql) or die(mysql_error());
10:
 
11:
      $pages = array();
12:
 
13:
      while ($row mysql_fetch_assoc($result)) {
14:
         $pages[$row['parent']][] = $row;   
15:
      }
16:
      
17:
   }
18:
   
19:
   if (!empty($pages[$parent])) {
20:
      
21:
      if (!isset($_GET['page'])) { $_GET['page'] = $pages[0][0]['link']; }
22:
 
23:
      echo '<ul>';
24:
      
25:
      foreach ($pages[$parent] as $page) {
26:
         if ($_GET['page'] == $page['link']) { $current " current"; }
27:
         else { $current ''; }
28:
         echo '<li class="'.$page['link'].$current.'">';
29:
         echo '<a href="index.php?page='.$page['link'].'">'.$page['title'].'</a>';
30:
         generate_menu($pages,$page['id'],$level+1);
31:
         echo '</li>';
32:
      }
33:
      
34:
      echo '</ul>';
35:
   
36:
   }
37:
   
38:
}
39:
 
40:
$start round(microtime(), 6);
41:
generate_menu();
42:
$stop round(microtime(), 6);
43:
$time round($stop-$start,6);
44:
 
45:
echo "Menu generated in $time seconds."
46:
 
47:
?>
48:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic