HoiraT adlı üyeden alıntı: mesajı görüntüle
Veritabanında kategori tablosu oluşturman lazım.
create table kategori(
no int(3) not null primary key auto_increment,
alt int(3) not null,
isim tinytext not null,
slug tingtext not null
);
no sütunu kategorinin kendi numarası olacak.
alt sütunu kategorinin alt kategorimi yoksa ana kategorimi olduğunu anlamak için. örneğin:

insert into kategori values(1,0,'HTML Arka Planına Renk Verme','html-arka-planina-renk-verme');
bu kayıt bir ana kategori çünkü alt sütunu 0 yani hiçbir kategorinin alt kategorisi değil.

insert into kategori values(2,1,'Örnek','ornek');
Bu kayıt ise ilk kayda eklenen bir alt kategori yani senin örneğine göre 1.1 oluyor.

Veritabanı yapısı bu kadar sırada php ile kategorileri çekme işi var. bunuda recursive (kendini çağıran) bir fonksiyon yazarak sağlayabilirsin. (veritabanı için pdo kullandığını varsayıyorum)

function kategori($alt_no = 0) {
global $db;
$q = $db->query("SELECT no, alt, isim, slug FROM kategori WHERE alt='".$alt_no."'");
list($no, $alt, $isim, $slug) = $q->fetch();
$arr[] = array($no, $alt, $isim, $slug);
// burada fonksiyon kendini çağırıyor. her kategorinin alt kategorisi varmı diye tekrar sorgulayacak. bütün kategorilere bakıldığında yani bakılacak başka kayıt kalmadığında fonksiyon otomatik olarak son bulacak.
kategori($alt);
}

// buradada sonuçları alalım. foreach gibi bir döngü içinde çıktılayabilirsin.
$arr = array();
$arr = kategori();
print_r($arr);
Anlattıklarım işin mantığını anlaman için ve yazdığım kodlarıda aynı şekilde yazdım test etmedim çalıştırmadan direk yazıyorum sonuçta işin mantığını anlamak hazır kod almaktan daha önemli ama hazır kod istiyorum diyorsan google de ara mutlaka bulursun.
Hocam sağolun. İşin mantığı önemliydi benim.