Fondamentalmente si fa tutto in Javascript.
La creazione degli option non la devi far fare a PHP, è impossibile a meno di ricaricare la pagina ogni volta che si cambia selezione nel primo select (che se uno cambia spesso diventa un casino).

Funziona così:
- Crei il form con solo il primo campo select popolato, il secondo lo crei, ma vuoto e disabilitato
- quando si seleziona qualcosa nel primo select devi recuperare tale valore con Javascript
- tramite AJAX invii una chiamata asincrona contenente come parametro il valore scelto nel primo select ad uno script PHP
- lo script PHP esegue una query sul DB e restituisce il risultato (suggerisco in formato JSON) con un echo alla fine
- AJAX recupera la stringa JSON con i dati per generare gli option, li aggiunge al secondo select e lo abilita

Quindi con PHP c'è poco o niente da fare.
Per la parte Javascript chiedi nell'apposita sezione del forum.