ridzuan Posted March 8, 2013 Share Posted March 8, 2013 Hi, I need some help here, i cant manage to settle this problem. Wish someone can help me. I want the result as below :- <ul class="navigation"> <li><a href="main-1.php">main-1</a></li> <li><a class="dropdown" href="main-2.php">main-2</a> <ul class="dropdown"> <li><a href="sub-21.php"></a>sub-1</li> <li><a href="sub-22.php"></a>sub-2</li> </ul></li> <li><a class="dropdown" href="main-3.php">main-3</a> <ul class="dropdown"> <li><a href="sub-31.php"></a>sub-1</li> <li><a href="sub-32.php"></a>sub-2</li> </ul></li> </ul> Here my output : - <ul class="navigation"> <li><a class="dropdown" href="main-1.php">main-1</li> <li><a class="dropdown" href="main-2.php">main-2</a> <ul class="dropdown"> <li><a class="dropdown" href="sub-21.php">sub-1</a></li> <li><a class="dropdown" href="sub-22.php">sub-2</a></li> </ul></li> <li><a class="dropdown" href="main-3.php">main-3</a> <ul class="dropdown"> <li><a class="dropdown" href="sub-31.php">sub-1</a></li> <li><a class="dropdown" href="sub-32.php">sub-2</a></li> </ul></li> </ul> Additional Info :- <?php $mysqli = new mysqli('localhost', 'root', '', 'localhost_test'); $query = 'SELECT id, parent_id, name, link FROM categories'; $result = $mysqli->query($query); if ($result->num_rows > 0) { $categories = array(); while($row = $result->fetch_assoc()) { if ($row['parent_id'] != 0) { $categories[$row['parent_id']]['sub'][] = $row; } else { $categories[$row['id']] = $row; } } echo '<ul class="navigation">'; foreach($categories as $cat) { echo '<li><a class="dropdown" href="' . $cat['link'] . '">'; if ($cat['parent_id'] == 0) { echo $cat['name']; } if (isset($cat['sub']) && is_array($cat['sub'])) { echo '</a><ul class="dropdown">'; foreach($cat['sub'] as $sub) { echo '<li><a class="dropdown" href="' . $sub['link'] . '">' . $sub['name'] . '</a></li>'; } echo '</ul>'; } echo '</li>'; } echo '</ul>'; } else { echo 'There are no categories'; } ?> SQL -- -------------------------------------------------------- -- Host: localhost -- Server version: 5.5.27 - MySQL Community Server (GPL) -- Server OS: Win32 -- HeidiSQL version: 7.0.0.4053 -- Date/time: 2013-03-08 09:28:54 -- -------------------------------------------------------- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 */; /*!40014 SET FOREIGN_KEY_CHECKS=0 */; -- Dumping database structure for localhost_test CREATE DATABASE IF NOT EXISTS `localhost_test` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `localhost_test`; -- Dumping structure for table localhost_test.categories CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `parent_id` int(10) unsigned NOT NULL DEFAULT '0', `name` varchar(100) NOT NULL, `link` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; -- Dumping data for table localhost_test.categories: 7 rows /*!40000 ALTER TABLE `categories` DISABLE KEYS */; INSERT INTO `categories` (`id`, `parent_id`, `name`, `link`) VALUES (1, 0, 'main-1', 'main-1.php'), (2, 0, 'main-2', 'main-2.php'), (3, 2, 'sub-1', 'sub-21.php'), (4, 2, 'sub-2', 'sub-22.php'), (5, 0, 'main-3', 'main-3.php'), (6, 5, 'sub-1', 'sub-31.php'), (7, 5, 'sub-2', 'sub-32.php'); /*!40000 ALTER TABLE `categories` ENABLE KEYS */; /*!40014 SET FOREIGN_KEY_CHECKS=1 */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; Quote Link to comment https://forums.phpfreaks.com/topic/275392-navigation-menu-array/ Share on other sites More sharing options...
matthew.javelet Posted March 8, 2013 Share Posted March 8, 2013 You already have it done dude, you just need to change one part. The first echo inside the foreach loop is what your issue is. Change: echo '<li><a class="dropdown" href="' . $cat['link'] . '">'; To: echo '<li><a href="' . $cat['link'] . '">'; Quote Link to comment https://forums.phpfreaks.com/topic/275392-navigation-menu-array/#findComment-1417431 Share on other sites More sharing options...
Christian F. Posted March 8, 2013 Share Posted March 8, 2013 What problem? Lots of information in your post, which is great, but you seem to have forgotten to describe what your problem is. Quote Link to comment https://forums.phpfreaks.com/topic/275392-navigation-menu-array/#findComment-1417471 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.