/// Recursive function to output the breadcrumb
function breadcrumb($id,$layer=0,$out=''){
/// If id = 0 outputs that it is Root Category. No need to go any further.
if($id ==0){
return "Root Category";
}
/// if id > 0 fetches the details of the category first
$crumbsql = mysql_query("Select * From category Where cat_id = '".$id."' ");
$crumbres = mysql_fetch_array($crumbsql);
/// for the first call (the category which will be displayed last)
/// the layer is 0 to denote it is the current category and wont
/// be having a link.
if($layer == 0){
$out = $crumbres['cat_name'];
} else {
$out = ''.$crumbres['cat_name'].' > '.$out;
}
/// The layer increses to ensure all other categories have links.
$layer++;
/// If the parent category is greater than 0 the function is called again and the same steps are followed.
/// If it reaches 0 then Root Category is printed and the output returned to process.
if($crumbres['cat_parent_id'] > 0){
$out = breadcrumb($crumbres['cat_parent_id'],$layer,$out);
} else {
$out = 'Root Category > '.$out;
}
return $out;
}
/// By default the category is set to 0.
$catid = 0;
/// Current category id is fetched from the URL Query String
if(isset($_GET['catid'])){
if($_GET['catid']!= ''){
$catid = $_GET['catid'];
}
}
/// Output of recursive function
echo breadcrumb($catid);
———————————————————————————-
The MySQL table used is below
CREATE TABLE `category` ( `cat_id` int(11) NOT NULL auto_increment, `cat_name` varchar(255) NOT NULL, `cat_parent_id` int(11) NOT NULL, PRIMARY KEY (`cat_id`) )
