Kodlar aşşağıdadir. iceriklerdeki kat_adi yerini kat_id yaparsan güvenle kullanabilirsin. Biraz basit oldu anlaman için ama işini görür. Daha fazla geliştirilebilir.
$kategori = mysql_query("select kat_adi,id from kategoriler where kategoriler.yayinlansin = 'EVET' order by sira asc");
echo '<table width="200" border="0" cellpading="2" cellspacing="1" bgcolor="#000000">
		<tr><td colspan="2" bgcolor="#ffffff">Kategoriler</td></tr>';
	while($row=mysql_fetch_assoc($kategori)){
		echo '<tr><td bgcolor="#ffffff"><strong>'.$row["kat_adi"].'</strong></td></tr>';
			$icerik = mysql_query("select baslik,id from icerikler where kat_id = '".$row["id"]."'");
			while($irow=mysql_fetch_assoc($icerik)){
				echo '<tr><td bgcolor="#ffffff">--<a href="gidicekyer.php?id='.$irow["id"].'">'.$irow["baslik"].'</a></td></tr>';
			}
	}
echo '</table>';
İçeriklerde şöyle olmalıdır;
Kategoriler ;
id 	kat_adi 	sira 	yayinlansin
1 	Kategori1	1 	EVET
1 	Kategori2	2 	EVET
1 	Kategori3	3 	EVET
1 	Kategori4	4 	EVET
İçerikler
id 	kat_id 	tarih      	        baslik 	icerik
1 	1 	2009-08-24 22:19:17 	Baslik1 	içerik
1 	2 	2009-08-24 22:19:17 	Baslik2 	içerik
1 	3 	2009-08-24 22:19:17 	Baslik3 	içerik
1 	4 	2009-08-24 22:19:17 	Baslik4 	içerik
1 	1 	2009-08-24 22:19:17 	Baslik5 	içerik
1 	1 	2009-08-24 22:19:17 	Baslik6 	içerik
1 	3 	2009-08-24 22:19:17 	Baslik7 	içerik
Gibi devam etmelidir.