Логиката не е сложна - няма смисъл да пренареждаш чужди кодове. Общо взето се свежда до следното: имаш два селекта - първия винаги е зареден с конкретни данни, а втория се зарежда на базата на избора от първия. За целта при зареждането пускаш заявка, която да попълни първия селект (или ако данните са статични - направо ги слагаш в html-a). На onchange на първия селект закачаш една функция, реализираща ajax заявка и попъваш втория селект. Ако данните не са много и търсиш бързина на работа - можеш първоначално да си заредиш всички данни в подходяща структура и на onchange - директно пълниш данните от нея - практически нямаш забавяне при този вариант, но той не е много добра идея, ако данните са доста.
Всъщност реализацията е свързана главно с javascript, а частта с php-то се свежда просто до извличане на данни от базата. И един съвет - за подобни сравнително елементарни ситуации е най-добре сами да си ги реализирате - ще си поблъскате малко главата, но в крайна сметка веднъж като си го направите сами повече няма да имате проблеми с подобни ситуации. Език се учи не с безсмислени фрагменти код от съмнителни източници, а чрез самостоятелна практическа реализация на поставени проблеми. Естествено преди това трябва да се прочете базовия синтактис на езика, който се учи - сано с гледане на случайни клипчета до никъде не се стига. [/list]