Arkadaşım burada kaçırdığın birşey var. sen iki veriyi göndermek yerine sadece kategoriyi gönderirsen o kategorinin veritabanında üst kategorinin id'ine ulaşabiliryosun zaten. Bence sınırsız kategori olarak kodlarsan daha doğru olur kanaatindeyim. ve javascriptte de gerek kalmaz. örnek olarak ; sıfır olarak belirtilen üst kategori en üstteki kategori olur

id kategori_adi üst_kategori
1 kategori1 0
2 kategori2 1
3 kategori3 0
4 kategori4 0
5 kategori5 2

----
kategori 2 olan kategori kategori 1 in bir alt kategorisi oluyor kategori5 te kategori2 nin

buna göre
function kategoriler($id=0){
$query = mysql_query('select * from kategori where üst_kategori=$id);
$row=mysql_fetch_array($query);
echo '<option value="'.$row['id'].'">'.$row['kategori_adi'].'</option>';
kategoriler($row['id']);
}

---
bu şekilde hazırlarsan fonksiyonunu
<select name="">
<?php kategoriler() ?>
</select>
tek sorguda aynı select içine optionları kategorilerin alt kategorilerine göre sıralamış olursun. zaten kategorinin içinde üst kategorinin de değeri olduğu için submit ettiğin yerde bir sorguyla üst kategori id sini de alabilirsin. en kısa ve hızlı yoldan bu şekilde halledebilirsin....
zaten bu fonksiyonda sınırsız kategori olarak görüntüleme yapacaktır..