How to create Multi Level Category Hierarchy using PHP(Recursive function) & Mysql
In this article we will create a multi-level category menu using PHP and mysql, by calling a recursive function, we can display infinite level of categories and subcategories.
Follow step by step instruction:
Download code
1) Create Database:
You need to create a Database 'multi_level' and a table 'category' with 3 columns as following:
category_id : Primary key.
category_name : Name of the category.
parent_id : It is the parent to corresponding category_id. For root category parent_id is 0.
Follow step by step instruction:
Download code
1) Create Database:
You need to create a Database 'multi_level' and a table 'category' with 3 columns as following:
category_id : Primary key.
category_name : Name of the category.
parent_id : It is the parent to corresponding category_id. For root category parent_id is 0.
2) Create Database connection:
3) Create mysql query to fetch data:
4) Create Recursive function to display Category Hierarchy:
5) Now call Recursive function to display all Category in Hierarchy:
<?php
DEFINE('DB_HOST','localhost');
DEFINE('DB_USER','root');
DEFINE('DB_NAME','multi_level');
DEFINE('DB_PASS','');
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or
die('could not connect: '. mysqli_connect_error() );
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
3) Create mysql query to fetch data:
<?php
$sql = "SELECT category_id, category_name, parent_id FROM category ORDER BY parent_id, category_id";
$results = mysqli_query($con,$sql) or die(mysqli_error()) ;
if($results)
{
while($result = mysqli_fetch_array($results))
{
$category['categories'][$result['category_id']] = $result;
$category['parent_cats'][$result['parent_id']][] = $result['category_id'];
}
}
?>
4) Create Recursive function to display Category Hierarchy:
<?php
function getCategories($parent, $category)
{
$html = "";
if (isset($category['parent_cats'][$parent]))
{
$html .= "<ul>\n";
foreach ($category['parent_cats'][$parent] as $cat_id)
{
if (!isset($category['parent_cats'][$cat_id]))
{
$html .= "<li>".$category['categories'][$cat_id]['category_name']."</li> \n";
}
if (isset($category['parent_cats'][$cat_id]))
{
$html .= "<li>". $category['categories'][$cat_id]['category_name'] . " \n";
$html .= getCategories($cat_id, $category);
$html .= "</li> \n";
}
}
$html .= "</ul> \n";
}
return $html;
}
?>
5) Now call Recursive function to display all Category in Hierarchy:
<?php echo $data['category'] = getCategories(0, $category);?>
Please add your feedback!
Please support us, Like us on Facebook.
Subscribe to:
Post Comments (Atom)

Good One bro...
ReplyDelete