А зачем это делать на пхп? Получите всех авторов с категориями одним запросом и сгенерируйте яваскриптовый хэш из всех авторов по категориям, в таком виде:
[CODE]var hash = {101: {10:'Московский Автор',20:'Питерский Автор',30:'Ростовский Автор'},
102: {40:'Немецкий Автор',50:'Американский Автор',60:'Английский Автор'}}
[/CODE]А потом на onchange одного селекта по его value подставляйте куски хеша в другой селект в виде опций:[CODE]function f(s) {
a = document.getElementById('auth');a.innerHTML = '';
for(i in hash[s.value]) {
o = document.createElement('OPTION');
o.innerHTML = hash[s.value][i];o.value = i;
a.appendChild(o);
}
}[/CODE]Ну и финальный штрих - инициализация вторго селекта первым:[CODE]<script>f(document.getElementById('category'));</script>[/CODE]Если у вас авторов так много, что выводить их все в хэш слишком напряжно для трафика пользователя, можно подгружать их через асинхронный http-запрос, как это делается в модных "web 2.0" сайтах.