* : {
    'kategoriler':{
        'süt ürünleri':{
            'id':1
        },
        'et ürünleri':{
            'id':2
        },
        'sebzeler':{
            'id':3
        }
    },
    'alt kategoriler':{
        'peynirler':{
            'id':29,
            'üst kategori':'süt ürünleri',
            'üst kategori id': 1
        },
        'yoğurtlar':{
            'id':28,
            'üst kategori':'süt ürünleri',
            'üst kategori id': 1
        },
        'kremalar':{
            'id':30,
            'üst kategori':'süt ürünleri',
            'üst kategori id': 1
        },
        'kırmızı etler':{
            'id':31,
            'üst kategori':'et ürünleri',
            'üst kategori id':2
        },
        'beyaz etler':{
            'id':32,
            'üst kategori':'et ürünleri',
            'üst kategori id':2
        },
    },
    'ürünler':{
        'dost marka yağlı peynir':{
            'id':1,
            'ad':'dost marka yağlı peynir (500g)',
            'üst kategori':'peynirler',
            'üst kategori id':29
        },
        'dost yarım yağlı peynir ':{
            'id':2,
            'ad':'dost marka yağlı peynir (500g)',
            'üst kategori':'peynirler',
            'üst kategori id':29
        },
        'tavuk pirzola (500g)':{
            'id':3,
            'ad':'tavur pirzola (500g)',
            'üst kategori':'beyaz etler',
            'üst kategori id':32
        },
    }
}
yani:

ana kategori
|
v
alt kagegori
|
v
ürün

şeklinde


veri çekme kodu da şu şekilde olacaktır.
$altkategoriler = $databasedegiskeni ->query("SELECT * FROM alt_kategoriler WHERE üst_kategori_id=1 ");
///burdan çektiklerini foreach ile istediğin o menüye ekleyebilirsin.
///oradan da get ile id gönderip alt kategori idsi ile aşağıdaki gibi ürünleri çekebilir ve sayfada listeletebilirsin.

$urunler = $databasedegiskeni ->query("SELECT * FROM ürünler WHERE üst_kategori_id=1 "); // ürünler tablosunda üst kategori id'si 1 olan tüm satırları listeleyebilirsin.