Aşağıdaki kodda, "kategoriler" tablomuza bağlanıyoruz, sizin data yapınıza göre değişkenler:

kat_id = id
kat_ustid = ust_menu_id
kat_adi = link_adi

<?php

		// Kategorileri çekiyoruz...
		$query = "SELECT * FROM kategoriler order by kat_id ASC";
		$goster = $db->prepare($query);
		$goster->execute(); //queriyi tetikliyor
		$toplamSatirSayisi = $goster->rowCount(); // sorgudan dönen satır sayısını öğreniyoruz
		$tumSonuclar = $goster->fetchAll(); //DB'deki bütün satırları ve sutunları $tumSonuclar değişkenine dizi şeklinde aktarıyoruz
		//alt kategorisi olmayan kategorilerin sayısını öğreniyoruz:
		$altKategoriSayisi = 0;
		for ($i = 0; $i < $toplamSatirSayisi; $i++) {
			if ($tumSonuclar[$i]['kat_ustid'] == "0") {
				$altKategoriSayisi++;
			}
		}

		// Kategoriler yazdırıyoruz...
		for ($i = 0; $i < $toplamSatirSayisi; $i++) {
			if ($tumSonuclar[$i]['kat_ustid'] == "0") {
				Ust_Kategoriler($tumSonuclar[$i]['kat_id'], $tumSonuclar[$i]['kat_adi'], $tumSonuclar[$i]['kat_ustid']);
			}
		}

		function Ust_Kategoriler($id, $baslik, $ustKategori) {
		 
			global $tumSonuclar;
			global $toplamSatirSayisi;
		 
			//kategorinin, alt kategori sayısını öğreniyoruz:
			$altKategoriSayisi = 0;
			for ($i = 0; $i < $toplamSatirSayisi; $i++) {
				if ($tumSonuclar[$i]['kat_ustid'] == $id) {
					$altKategoriSayisi++;
				}
			}
			
			// eğer alt kategorisi varsa, link vermiyoruz...
			if ($altKategoriSayisi > 0) {
				echo '<li class="has-sub"><a href="'.$id.'-urunler-'.permalink($baslik).'.html">'.$baslik.' ('.$altKategoriSayisi.') <div class="arti artidiv"><i class="fa fa-plus-square-o"></i></div><div class="arti eksidiv"><i class="eksi fa fa-minus-square-o"></i></div></a>';
			}else{
				echo '<li class="has-sub"><a href="'.$id.'-urunler-'.permalink($baslik).'.html">'.$baslik.' ('.$altKategoriSayisi.')</a>';
				
			}
			
			if ($altKategoriSayisi > 0) { //alt kategorisi varsa onları da listele
			   
			   echo '<ul>';
		 
				for ($i = 0; $i < $toplamSatirSayisi; $i++) {
		 
					if ($tumSonuclar[$i]['kat_ustid'] == $id) {
						Ust_Kategoriler($tumSonuclar[$i]['kat_id'], $tumSonuclar[$i]['kat_adi'], $tumSonuclar[$i]['kat_ustid']);
					}
				}
		 
				echo '</ul>';
			}
			
			echo '</li>';
		   
		}
	?>