In this tutorial we'll see how to create a fully database driven menu.
Our menu will work fine also if we decide to insert some links later in time as we'll use a position index to sort the menu links.
First we need to create the database table for our menu.
You can use this script to create the table.
The fields we'll use are:
id - we just to have a primary key in our table, it can also be useful if we want to add additional submenues as tables
name - is what will be displaied as the text of the menu item
position - is the position of the menu item, we'll go with 10 by 10 steps so other items can be added later
link - is where the link sill send the visitor when clicked
Now let's populate our table with some dummy stuff; you can run this script (into your phpmyadmin or whatsoever you are using) to add stuff in your own table.
Now that our stuff is stored into the database we neet to retrieve it and display it on our pages.
We need to connect to the database and run the query that retrieves the content of the menu table.
You can find out how to connect to a database in this tutorial.
Then we run this php lines to run the query and display the results.
This will display the content of our table as:
and obviously each menu item will have its appropriate link.
If you decided to add a new menu item and you wanted it to be displayed, for example, between About Us and Contact Us, you should just add it with some position value bigger than 30 and smaller than 40; it will be automatically displayed in the right position.
Our menu will work fine also if we decide to insert some links later in time as we'll use a position index to sort the menu links.
First we need to create the database table for our menu.
You can use this script to create the table.
The fields we'll use are:
id - we just to have a primary key in our table, it can also be useful if we want to add additional submenues as tables
name - is what will be displaied as the text of the menu item
position - is the position of the menu item, we'll go with 10 by 10 steps so other items can be added later
link - is where the link sill send the visitor when clicked
Code:
CREATE TABLE `menu` ( `id` int(3) NOT NULL auto_increment, `name` varchar(20) NOT NULL default '', `position` int(3) NOT NULL default '0', `link` varchar(100) NOT NULL default '', PRIMARY KEY (`id`)) ENGINE=MyISAM;
Code:
INSERT INTO `menu` VALUES (1, 'Home', 0, 'index.php?maincat=home'); INSERT INTO `menu` VALUES (2, 'Forums', 10, 'index.php?maincat=forums'); INSERT INTO `menu` VALUES (3, 'Tutorials', 20, 'index.php?maincat=tutorials'); INSERT INTO `menu` VALUES (4, 'About Us', 30, 'index.php?maincat=about'); INSERT INTO `menu` VALUES (5, 'Contact Us', 40, 'index.php?maincat=contact');
We need to connect to the database and run the query that retrieves the content of the menu table.
You can find out how to connect to a database in this tutorial.
Then we run this php lines to run the query and display the results.
Code:
<?php $count = 0; //This is used to avoid that "|" is printed before the first menu item $query = mysql_query("SELECT * FROM menu ORDER BY position ASC") or die(mysql_error()); while ($row = mysql_fetch_object($query)) { if ($count!=0){echo " | ";} echo "<a href=\"$row->link\" alt=\"$row->name\">".$row->name.""; $count++; } ?>
Code:
Home | Forums | Tutorials | About Us | Contact Us
If you decided to add a new menu item and you wanted it to be displayed, for example, between About Us and Contact Us, you should just add it with some position value bigger than 30 and smaller than 40; it will be automatically displayed in the right position.