Hejsa.
Jeg ville da lige dele min kode med alle andre som jeg sad og fandt på i går.
Det hele kommer sig af at jeg gerne ville have min menu lagt ned i databasen, bl.a for at kunne styre hvilken rækkefølge de skal ligge i samt ændre navnene nemt på menupunkterne.
Her finder du databasestrukturen samt lidt dummy data
-- tabel navnet er menu (OBS order feltet bruges ikke!)
CREATE TABLE IF NOT EXISTS `menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`parent_id` int(11) NOT NULL,
`icon` varchar(50) NOT NULL,
`order` varchar(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;
--
-- Data dump for tabellen `menu`
--
INSERT INTO `menu` (`id`, `name`, `parent_id`, `icon`, `order`) VALUES
(10, 'Udvikling', 7, '', '0'),
(9, 'Kort', 7, '', '0'),
(8, 'Kampe', 7, '', '0'),
(7, 'Dommer', 0, 'marker.png', '2'),
(6, 'Skrivebord', 0, 'home.png', '1'),
(11, 'SMART Skema', 7, '', '0'),
(12, 'Træning', 7, '', '0'),
(13, 'Kontakter', 7, '', '0'),
(14, 'Regnskab', 7, '', '0'),
(15, 'Kontoudtog', 7, '', '0'),
(19, 'Kontakter', 0, 'contacts.png', '5'),
(18, 'Film', 0, 'movie.png', '3'),
(20, 'Arbejde', 0, 'factory.png', '6'),
(21, 'Privat', 0, 'inbox2.png', '7'),
(22, 'Bank', 21, '', '0'),
(23, 'Bonner', 21, '', '0'),
(24, 'Forsikring', 21, '', '0'),
(25, 'Regninger', 21, '', '0'),
(26, 'Skat', 21, '', '0'),
(27, 'Indstillinger', 0, 'settings.png', '8'),
(28, 'Brugere', 27, '', '0'),
(29, 'Kalender', 0, 'calendar.png', '4');
Her følger så min kode der hente menuen
- <ul>
- <?php
- $con = mysql_connect("localhost","root","") or die(mysql_error());
- mysql_select_db("test", $con) or die(mysql_error());
-
- $topmenu = mysql_query("SELECT * FROM menu WHERE parent_id = '0' ORDER BY id ") or die(mysql_error());
- while($top = mysql_fetch_assoc($topmenu))
- {
- $id = $top['id'];
- $pid = $top['parent_id'];
- $num_pid = mysql_num_rows(mysql_query("SELECT * FROM menu WHERE parent_id = '$id'"));
- if($num_pid == 0)
- {
- echo "<li class='nosubmenu'>";
- echo "<a href=\"#\">" . $top['name'] . "<img src=\"images/icons/menu/" . $top['icon'] . "\" /></a>";
- echo "</li>";
- } else
- {
- echo "<li>";
- echo "<a href=\"\">" . $top['name'] . "</a>";
- echo "<ul>";
- $submenu = mysql_query("SELECT * FROM menu WHERE parent_id = '$id' ORDER BY id") or die(mysql_error());
- while($sub = mysql_fetch_assoc($submenu))
- {
- echo "<li>";
- echo "<a href=\"#\">" . $sub['name'] . "</a>";
- echo "</li>";
- }
- echo "</ul>";
- echo "</li>";
- }
- }
- ?>
- </ul>
På topmenuen findes der noget kode som udskriver et icon. Denne linje kan man fjerne hvis man ønsker, jeg har anvendt da jeg skal bruge det i min menu
Man kan så hvis man vil have flere niveauer på tilføje flere if statements i while løkken submenu.
Jeg kunne godt tænke mig at høre nogle kommentar på koden.
Jeg ved godt jeg kan gøre det anderledes, men jeg har aldrig forstået de andre, denne her forstår jeg lidt nemmere.
Indlæg senest redigeret d. 07.10.2011 09:18 af Bruger #15663